【问题标题】:insert name and value pair插入名称和值对
【发布时间】:2012-03-01 05:13:51
【问题描述】:

示例:

var data = { name : "John",age : 19}

我想在 json 对象中添加另一对。

{gender : male}

这样它就会变成

data = { name : "John",age : 19,gender : "male" }

【问题讨论】:

  • 这里并不是真正的“JSON 对象”,而是 JavaScript 对象。 JSON 是一种文本格式,顺便说一句,键名必须用双引号引起来。
  • @RayToal:一点也不“迂腐”。

标签: javascript json insert


【解决方案1】:

你只需要

data.gender = "male";

【讨论】:

    【解决方案2】:

    是的,要么:

    data.gender = "male";
    

    data['gender'] = "male";
    

    (这些是等价的。)

    如果您使用 jQuery(或许多其他库之一),您可能有一个对此有用的“扩展”函数。它“合并”了两个 Javascript 对象。在 jQuery 中:

    $.extend(data, { gender: "male" });
    

    这很好,因为您可以使用多个值扩展 JSON 对象。

    【讨论】:

      【解决方案3】:
      var data = { name : "John",age : 19};
      var update = {gender : "male"};
      
      
      function merge(target, source){
          for(var prop in source){
              target[prop] = source[prop];
          }
          return target;
      }
      
      var merged = merge(data, update);
      

      这会将update 中的所有属性添加到data。使用返回值是可选的。 data 本身在函数内部被更新,因为它是对象。

      或者如果你使用 jQuery

      var merged = $.extend(data, update);
      

      使用 jQuery 我们可以进行深度合并

      var update = {gender : "male", address:{house:"house1", street:"street1", pin:"pin1"}};
      var merged = $.extend(true, data, update);
      

      要使用纯 javascript 实现相同的功能,您必须修改并递归调用我上面编写的函数。

      【讨论】:

      • Jaider想补充:或者不修改数据:var merged = $.extend({}, data, update);
      【解决方案4】:

      试试这个:

      var data = { name : "John",age : 19};
      data.gender = "male";
      

      【讨论】:

        【解决方案5】:
        data.gender = "male"
        

        更多信息在这里:Dynamically Add Variable Name Value Pairs to JSON Object

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-07-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多