JSON.stringify 忽略一些对象成员

     2023-03-05     164

关键词:

【中文标题】JSON.stringify 忽略一些对象成员【英文标题】:JSON.stringify ignore some object members 【发布时间】:2011-11-18 06:12:04 【问题描述】:

这是一个简单的例子。

function Person() 
  this.name = "Ted";
  this.age = 5;


persons[0] = new Person();
persons[1] = new Person();
JSON.stringify(persons);

如果我有一个 Person 对象的 array,并且我想对它们进行字符串化。如何只返回带有 name 变量的 JSON。

这样做的原因是,我有一些带有递归引用的大型对象会导致问题。我想从字符串化过程中删除递归变量和其他变量。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

最简单的答案是指定要字符串化的属性

JSON.stringify( persons, ["name"] )

另一种选择是将 toJSON 方法添加到您的对象

function Person()
  this.name = "Ted";
  this.age = 5;      

Person.prototype.toJSON = function() return this.name ;

更多:http://www.json.org/js.html

【讨论】:

这似乎比接受的答案更好。您可以使用 replacer 参数编写一个函数,该函数将排除您不想在对象中序列化的 w/e 属性。【参考方案2】:

see this post 指定您想要包含的字段。 JSON.stringify(person,["name","Address", "Line1", "City"]) 它比上面建议的更匹配!

【讨论】:

【参考方案3】:

我会创建一个新数组:

var personNames = $.map(persons,function(person)
  return person.name;
);
var jsonStr = JSON.stringify(personNames);

【讨论】:

如果我想返回多个值,我可以将它们放在一个数组中吗?抱歉,我现在无法访问我的代码来为自己尝试。 你会返回一个属性映射,例如return name: person.name, id: person.id ; 我不能让它工作,使用你的代码只是返回整个 person 对象。你确定这是正确的吗? jQuery API 中 .grep 的示例使用该函数返回一个布尔值,确定整个对象是否包含在数组中。不定义包含哪些变量。 对不起,我用错了方法。应该是 $.map,我会更新答案。 还有一件事,目前正在返回一个对象。我实际上想要数据数组,单个数组中的数组。有没有简单的方法可以做到这一点?【参考方案4】:

如果您只支持与 ECMAScript 5 兼容的环境,则可以通过使用 Object.defineProperty()[docs]Object.defineProperties()[docs] 设置应排除的属性不可枚举

function Person() 
    this.name = "Ted";
    Object.defineProperty( this, 'age', 
        value:5,
        writable:true,
        configurable:true,
        enumerable:false // this is the default value, so it could be excluded
    );


var persons = [];

persons[0] = new Person();
persons[1] = new Person();

console.log(JSON.stringify(persons));  // ["name":"Ted","name":"Ted"]

【讨论】:

由于我的无知,这只是一个一般性的问题......什么样的开发人员只支持 ECMAScript 5,他正在做什么样的事情?什么正在运行 ECMAScript 5 等? @Allen:用于确保浏览器类型/版本的封闭环境的内部应用程序。或服务器端代码,尽管由于 OP 包含 jQuery 标记,这不太可能。 “什么正在运行 ECMAScript 5 等?” 如果您的意思是哪些环境支持 ES 5,请查看来自 Kangax 的 ES 5 compatibility table。 谢谢!在做了一些研究之后,我在发表上面的评论后看到了这张表 :) 看起来已经有很多浏览器实现了这些功能,非常令人兴奋! 谢谢大家,我也可以使用类似的方法来忽略方法吗?在构造对象期间,我有一个对本地方法的函数调用,例如this.method() 这导致字符串化仍然混乱(循环对象值) @Moz:该方法是在构造过程中使用的,还是它是构造函数的.prototype对象的成员。

JSON Stringify 忽略 Redis 发布上的嵌套对象

】JSONStringify忽略Redis发布上的嵌套对象【英文标题】:JSONStringifyignoresnestedobjectsonRedispublish【发布时间】:2019-10-1420:37:55【问题描述】:我在后端使用Redis来扩展订阅。我正在使用this库在我的javascript代码之上实现redis。并使用猫... 查看详情

kotlinx JSON.stringify 忽略空值

】kotlinxJSON.stringify忽略空值【英文标题】:kotlinxJSON.stringifyignorenullvalues【发布时间】:2018-10-1211:32:42【问题描述】:有没有办法在字符串化时忽略空值?目前它呈现为:“字段”:空如果有办法完全不呈现空字段,那就太好了... 查看详情

json.stringify()的使用

参考技术A复制粘贴一下JSON.stringify()三个参数的含义:返回值:返回包含JSON文本的字符串。从上面的参数说明中可以看到,第二个参数可以是一个函数或者数组,这给了我们很大的发挥空间。stringify()的第一个和第三个参数都好... 查看详情

JSON.stringify() 和 JavaScript 对象

】JSON.stringify()和JavaScript对象【英文标题】:JSON.stringify()andJavaScriptObjects【发布时间】:2011-08-2615:26:00【问题描述】:我在想也许我错过了一些我现在正在学习的JavaScript内容。我在Chrome控制台中尝试了这段代码:a=[];a.name="test";JS... 查看详情

json.stringify方法

用过json的应该都知道,把一个对象通过 stringify 之后提交给后台或者存储在 Storage 里是很常用的手段。但是IE6-7下没有JSON对象,所以要借助 json2.js 来实现。今天我们来简单介绍下 stringify 方法的一... 查看详情

浅谈js中的json.stringify()和json.parse()

参考技术A我们知道,JSON.stringify()和JSON.parse()是一对处理JSON数据的方法,前者是将JSON对象序列化为字符串,而后者是将JSON字符串解析为JSON对象。但是你有较为深入地去了解过它们吗?它们分别可以传入几个参数以及每个参数对... 查看详情

深度使用json.stringify()

按照JSON的规范,使用JSON.stringify()做对象序列化时,如果一个属性为函数,那这个属性就会被忽略。constdata1={a:‘aaa‘,fn:function(){returntrue}}JSON.stringify(data)//结果是"{"a":"aaa"}"还有一种情况,一个属性的值为undefinedconstdata2={a:‘abc‘,... 查看详情

json.stringify()的深度使用

在使用JSON.stringify()对JSON数据进行序列化时1>如果里面的属性是function,则会被忽略constdata={a:‘a‘,fn:funciton(){returntrue}}JSON.stringify(data);//"{"a":"a"}"*******fn属性被忽略了**********2>如果里面的属性的值是undefined,也是会被忽略的constda 查看详情

json.stringify详解

参考技术A当我们使用JSON.stringify()序列化一个值为JSON字符串,只有JSON安全的值才可以通过JSON.stringify()转换为字符串。那么,什么是JSON安全的值?能够有效用JSON形式表示的任何值。非JSON安全的值,例如:undefined、function和symbol... 查看详情

JSON stringify 已将 json 字符串作为值的对象

】JSONstringify已将json字符串作为值的对象【英文标题】:JSONstringifyobjectswithjsonstringsalreadyasvalues【发布时间】:2017-11-1317:33:10【问题描述】:可能是重复的问题,但找不到答案。我想对包含一些JSON字符串作为值的javascript对象进行... 查看详情

如何 JSON.stringify 对象数组

】如何JSON.stringify对象数组【英文标题】:HowtoJSON.stringifyanarrayofobjects【发布时间】:2016-05-0700:44:08【问题描述】:我正在尝试JSON.stringify()以下键/值对,其中值是对象数组。varstring=JSON.stringify(onlineUsers:getUsersInRoom(users,room));这是... 查看详情

NodeJS JSON.stringify() 瓶颈

】NodeJSJSON.stringify()瓶颈【英文标题】:NodeJSJSON.stringify()bottleneck【发布时间】:2014-03-2914:21:14【问题描述】:我的服务返回非常大的JSON对象的响应-大约60MB。经过一些分析后,我发现它几乎所有时间都在执行JSON.stringify()调用,... 查看详情

JSON.stringify 深层对象

】JSON.stringify深层对象【英文标题】:JSON.stringifydeepobjects【发布时间】:2012-12-0110:13:23【问题描述】:我需要一个从任何参数构建JSON有效字符串的函数,但是:通过不添加两次对象来避免递归问题通过截断超过给定深度来避免... 查看详情

json、array基础知识

...定以下是合格的JSON格式以下是不合格的写法思路:用JSON.stringify方法用于将一个值转为字符串。该字符串符合JSON格式,并且可以被JSON.parse方法还原。使用JSON.parse方法将JSON字符串转化成对象。注意:JSON.stringify方法会忽略对象的... 查看详情

text[stringify循环json对象]#js#json#stringify#cyclic#object(代码片段)

查看详情

json.stringify语法实例讲解

认识javascript也不短的时间了,可是这个用法说实在的,我还是第一次见过,惭愧啊惭愧啊。于是乎,在网上找了写资料,写了些例子希望能给园子们一些帮助。 作用:这个函数的作用主要是为了系列化对象的。 可能有... 查看详情

为啥 JSON.stringify 不显示作为函数的对象属性?

】为啥JSON.stringify不显示作为函数的对象属性?【英文标题】:Whydoesn\'tJSON.stringifydisplayobjectpropertiesthatarefunctions?为什么JSON.stringify不显示作为函数的对象属性?【发布时间】:2012-05-3013:13:44【问题描述】:为什么JSON.stringify()不... 查看详情

为啥 TypeError 上的 JSON.stringify 返回一个空对象 [重复]

】为啥TypeError上的JSON.stringify返回一个空对象[重复]【英文标题】:WhydoesJSON.stringifyonTypeErrorreturnanemptyobject[duplicate]为什么TypeError上的JSON.stringify返回一个空对象[重复]【发布时间】:2016-03-2118:22:09【问题描述】:我正在使用节点4.... 查看详情