4

我在 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

4 回答 4

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": ...
于 2012-12-24T11:26:20.143 回答
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);
于 2012-12-24T11:29:06.643 回答
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)

将其编码回字符串。

于 2012-12-24T11:27:59.780 回答
1

如果您希望您的变量通过,请执行以下操作(您提到您已经这样做了,但为了完整性我添加了它)

var parsedJson = JSON.parse(my_Variable);

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

var JsonWithoutDominiAsRoot = parsedJson.Domini;

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

于 2012-12-24T11:27:39.067 回答