删除JSON根目录

时间:2012-12-24 11:25:05

标签: javascript json

我在JavaScript变量上有以下字符串:

my_Variable = "{"Domini":[{"cod_domini":"1","nom_domini":"Sant Esteve de Palautordera"},{"cod_domini":"2","nom_domini":"Parc Natural del Montseny"},{"cod_domini":"5","nom_domini":"Sant Pere de Vilamajor"},{"cod_domini":"6","nom_domini":"Santa Maria i Mosqueroles"}]}"

我需要删除字符串Domini顶部的根,以便生成的字符串如下所示:

my_Variable = [{"cod_domini":"1","nom_domini":"Sant Esteve de Palautordera"},{"cod_domini":"2","nom_domini":"Parc Natural del Montseny"},{"cod_domini":"5","nom_domini":"Sant Pere de Vilamajor"},{"cod_domini":"6","nom_domini":"Santa Maria i Mosqueroles"}]

我尝试使用JSON.parse()函数将JSON解析为对象并且它可以工作,但是我不知道如何检索数据并处理它以生成没有root的新JSON。

我应该使用某种循环吗?

4 个答案:

答案 0 :(得分:6)

很简单:

my_Variable = my_Variable.Domini;

在JSON解析之后。

所以代码就像:

my_Variable = "{"Domini":[{"cod_domini":"1","nom_domini":"Sant Esteve de Palautordera"},{"cod_domini":"2","nom_domini":"Parc Natural del Montseny"},{"cod_domini":"5","nom_domini":"Sant Pere de Vilamajor"},{"cod_domini":"6","nom_domini":"Santa Maria i Mosqueroles"}]}";
my_Variable = JSON.parse( my_Variable );
my_Variable = my_Variable.Domini;
console.log( my_Variable ); // [{"cod_domini":"1","nom_domini": ...

答案 1 :(得分:3)

var obj = JSON.parse(json);
obj = [Object.keys(obj)[0]];
var newJson = JSON.stringify(obj);

或者,避开像Object.keys这样的ES5功能:

var obj = JSON.parse(json);
for (var key in obj) {
    if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;
    obj = obj[key];
    break;
}
var newJson = JSON.stringify(obj);

答案 2 :(得分:2)

考虑到在删除密钥后你想要它回到字符串。

my_Variable = JSON.stringify(JSON.parse(my_Variable).Domini);

击穿

JSON.parse(my_Variable)

将字符串解析为JSON对象。

JSON.parse(my_Variable).Domini

返回属性Domini的值。

JSON.stringify(JSON.parse(my_Variable).Domini)

将其编码回字符串。

答案 3 :(得分:1)

如果您希望传递变量,请执行以下操作(您提到过您已经完成此操作,但我已将其添加为完整性)

var parsedJson = JSON.parse(my_Variable);

解析后,只需执行以下操作:

var JsonWithoutDominiAsRoot = parsedJson.Domini;

你可以“。”通过新json对象的不同属性的方式。多米尼只是其中之一。