javascript - Jquery 将值数组添加到 json 对象

标签 javascript jquery

我正在尝试获取如下所示的 json 对象

 {
    "Name":"UnitedStates",
      "Info":[
        {"StateName":"Washington",
              "Commands":[
                       {"Type":"Men","Parameter":"10000"}, 
                       {"Type":"Women","Parameter":"30000"}
                     ]},
        {"StateName":"California",
               "Commands":[
                        {"Type":"Kids","Parameter":"20000"}
                          ]}
                     ]}

我正在尝试以下操作 Fiddle

如何将值数组添加到现有空白对象。

    var CountryName = 'UnitedStates';

    var Data = {
        Name: CountryName,
        Info: [
        commands :[]
        ]
       }

    Data.Info.push({'StateName': 'washington'});
    Data.Info.commands.push(
    {'Type': 'Men'},
     {'Parameter': '1000'},

    );


     $('.displayJsonBlock').empty();
    $('.displayJsonBlock').append('<pre><code>' + JSON.stringify(TemplateData) + '</pre></code>')

最佳答案

如果您查看错误控制台输出,您会发现它给出了语法错误,因为 Info 试图同时成为对象和数组:

Info: [
    commands :[]
]

如果你想插入Info,它需要是一个数组,但这意味着你不能像这样在文字中定义属性。如果你想定义这样的属性,它需要是一个像这样的对象:

Info: {
    commands :[]
}

但是你无法插入。

我认为您正在寻找的是:

var CountryName = 'UnitedStates';

var Data = {
  Name: CountryName,
  Info: [] // info is just an array
}

Data.Info.push({
  'StateName': 'washington',
  commands: []               // each element of Info is an object with a commands array
});
Data.Info[0].commands.push(  // you need to define which element of info. Here it's the first
    {'Type': 'Men'}, 
    {'Parameter': '1000'},
);
console.log(Data)

当然,您不需要执行两次推送,您可以推送整个对象,包括命令:

Data.Info.push({
  'StateName': 'washington',
  commands: [
    {'Type': 'Men'}, 
    {'Parameter': '1000'}
   ]
})               

关于javascript - Jquery 将值数组添加到 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51757033/

相关文章:

php - 在 DataTables 服务器端处理脚本中运行 MySQL 查询

javascript - jQuery 的 ENTER 事件

php - 单击按钮时删除动态创建的 dom 元素

javascript 运行时错误保存/恢复

javascript - 如何创建一个也是输入文本框的选择列表?

jquery - 通过 jquery ui 选项卡中的 url 更改事件选项卡 (jquery 1.10.2)

javascript - Visual Studio 2013 - AngularJS 基本问题

javascript - 具有链式箭头功能的 redux mapDispatchToProps

javascript - 将 jquery 变量合并到一个选择器中?

javascript - 显示/隐藏 div 并滚动到它