【问题标题】:Json.stringify specific fields where one of the fields is an objectJson.stringify 特定字段,其中一个字段是对象
【发布时间】:2013-11-07 20:17:23
【问题描述】:

问题
我想调用 JSON.stringify 传递我想包含在字符串中的字段。我要包括的字段之一是对象。 JSON.stringify 方法没有像我预期的那样包含对象中的任何字段。

这是我较大对象的一小部分;

  var person = {
      name: "John Doe",
      Address: { Line1: "100 north main",  City: "Des Moines" },
      Phone: "555-5555"
    }

这里是stringify方法调用

   console.log(JSON.stringify(person,["name","Address"]));

这是结果

"{\"name\":\"John Doe\",\"Address\":{}}"

这是我创建的一个 js bin - http://jsbin.com/UYOVufa/1/edit?html,console

我总是可以只对 person.Address 进行字符串化并将其与另一个字符串结合起来,但这感觉有点过头了。

我错过了什么?

谢谢,

【问题讨论】:

    标签: json


    【解决方案1】:

    如上所述,JSON.stringfy 进行递归替换,只需输入键名即可获取。但是,也足以让您轻松制作自己的 json 字符串版本。

    实现你想要的解决方案我的建议是

    JSON.stringify(person, function(k,v){
        if(k!=="Phone"){
            return v;
        }
    });
    

    该函数替换了默认替换器,让您可以在不影响原始 json 对象的情况下输出您想要的任何内容。想象一下可能性,大大增加对输出响应的控制。

    【讨论】:

      【解决方案2】:

      它检查每个键的字段列表,即使它是嵌套对象中的键:

      JSON.stringify(person, ['name', 'Address', 'Line1', 'City'])
      
      => "{"name":"John Doe","Address":{"Line1":"100 north main","City":"Des Moines"}}"
      

      【讨论】:

        【解决方案3】:

        JSON.stringify 接受替换器(那个数组...)作为参数。 注意替换文档:

        如果返回任何其他对象,则该对象被递归字符串化 进入 JSON 字符串,在每个属性上调用替换函数, 除非对象是一个函数,在这种情况下什么都不会添加到 JSON 字符串。

        (来源:https://developer.mozilla.org/en-US/docs/Using_native_JSON#The_replacer_parameter

        这将起作用:

        JSON.stringify(person,["name","Address", "Line1", "City"])
        

        【讨论】:

          猜你喜欢
          • 2021-10-13
          • 1970-01-01
          • 1970-01-01
          • 2021-10-02
          • 1970-01-01
          • 1970-01-01
          • 2019-05-17
          • 1970-01-01
          • 2018-08-19
          相关资源
          最近更新 更多