0

需要一些 JSON 帮助。我正在使用与此类似的 JSON:

{
    GreatGrandfather: {
        GrandFather: {
            Father: [
                {
                    Son: [
                        {
                            Name: "Abu Nazir",
                            Detail: {
                                Class: "3rd Grade"
                            }
                        },
                        {
                            Name: "Dexter",
                            Detail: {
                                Class: "6th Grade"
                            }
                        },
                        {
                            Name: "Rick",
                            Detail: {
                                Class: "11th Grade"
                            }
                        }
                    ]
                },
                {
                    Son: [
                         {
                            Name: "Tom Walker",
                            Detail: {
                                Class: "3rd Grade"
                            }
                        },
                        {
                            Name: "Sgt Bastisa",
                            Detail: {
                                Class: "6th Grade"
                            }
                        },
                        {
                            Name: "The Governer",
                            Detail: {
                                Class: "11th Grade"
                            }
                        }
                    ]
                }
            ]
        }
    }
}

我的问题是如何删除 Class 值为“3rd Grade”的 Sons?所以阿布纳齐尔和汤姆沃克都将被删除,每个父亲都只有两个儿子?

另外,我如何将儿子添加到两个父亲中?

{Name: "Stewie",Detail: {Class:"Kindergarden"}}

{Name: "Peter",Detail: {Class:"1st Grade"}}

谢谢!

4

2 回答 2

1
var obj = JSON.parse(jsonstring);
obj.GreatGrandFather.GrandFather.Father.forEach(function(father) {
    var sons = father.Son.filter(function(son) {
        return son.Details.Class != "3rd Grade";
    });
    sons.push({Name: "Stewie",Detail: {Class:"Kindergarden"}});
    sons.push({Name: "Peter",Detail: {Class:1st Grade}});
    father.Son = sons;
});
var newjson = JSON.stringify(obj);

当然,您可以使用循环而不是 ES5.1 迭代器函数来实现,但我认为您明白了这个概念。

于 2012-11-26T16:13:11.720 回答
1

在 javascript 中,您JSON.parse可以将 JSON 字符串转换为 javascript 对象,并对其进行操作:

var parsed = JSON.parse(JSONString);
var fathers = parsed.GreatGrandfather.GrandFather.Father;

// loop through the father array, removing sons in 3rd grade
for (var i = 0; i < fathers.length; i++) {
    var sons = fathers[i].Son;

    for (var j = 0; j < sons.length; j++) {
        // remove the 3rd graders
        if (sons[j].Detail.Class === '3rd Grade') {
            sons.splice(j, 1);
        }
    }
}

// add some sons
var newSon = {
    Name: "Stewie",
    Detail: {
        Class: "Kindergarden"
    }
};

fathers[0].Son.push(newSon);
于 2012-11-26T16:14:45.077 回答