JavaScript:如何在JSON结构中添加结构

时间:2017-01-19 21:30:10

标签: javascript json

[更新了父级和子级结构]

我有一个看起来像这样的JSON结构:

{
    "case":{
        "steps":{
            "step":[{
                "tasks":{
                    "task":{
                        "fields":{
                            "field":[{

                            }]
                        }
                    }
                }
            }]
        }
    }
};

我的结构也比较小:

"entry":{
    "name":"XYZ"
},

我想在较小的case.steps.step[0].tasks.task.fields

位置添加2个较小结构的副本

这可能吗?

2 个答案:

答案 0 :(得分:2)

这样的事情可以胜任:

var biggerStructure = JSON.parse(biggerJsonString);
var smallerStructure = JSON.parse(smallerJsonString);

biggerStructure.case.steps.step[0].tasks.task.fields.field.push(smallerStructure);
biggerStructure.case.steps.step[0].tasks.task.fields.field.push(smallerStructure);

var result = JSON.stringify(biggerStructure);

BTW:如果你试图向它添加多个对象,则字段应该是一个数组而不是一个对象,由于具有相同的名称,字段本身也不能多次添加到字段中。

然后最终结果将如下所示:

{
    "case":{
        "steps":{
            "step":[{
                "tasks":{
                    "task":{
                        "fields":{
                            "field":[{
                                {
                                    "name":"XYZ"
                                },
                                {
                                    "name":"XYZ"
                                }
                            }]
                        }                       
                    }
                }
            }]
        }
    }
};

答案 1 :(得分:1)

case.steps.step [0] .tasks.task.fields是一个对象,它包含两个字段副本,它需要是一个像

这样的数组
    {
    "case":{
        "steps":{
            "step":[{
                "tasks":{
                    "task":{
                        "fields":[

                        ]
                    }
                }
            }]
        }
    }
 };

然后它可以包含较小对象字段的多个条目

case.steps.step[0].tasks.task.fields.push({"field":[{
                                            "name":"XYZ"
                                              }]});