【发布时间】:2012-03-20 22:49:24
【问题描述】:
我想用 JS 创建一个多级 JSON 字符串。
场景
3 个国家有 5 个祖父和 3 个孩子,他们还有 3 个孩子和 5 个朋友。
我从一个看起来像这样的外部 JSON 文件中获取数据。
{"countries":[
{
"name":"USA",
"grandfathers":[
{
"gFName":"Steve",
"grandfathersKid":[
{
"gFKName": "Linda",
"kid": [{
"name": "Steve JR",
"friends": [{
"name": "Kriss|John|Martin|Steven"
}]
}
]
}
]
}
]
}
]}
现在我想在一个新的 JSON 列表中存储一些人及其亲属和朋友的国家/地区,该列表看起来与外部 json 文件中的列表完全相同。我打算稍后在脚本中使用这个“自制”列表。
我对此的最初反应是
var tree = new Array();
tree = {};
var countries = new Array();
countries[0] = "canada";
countries[1] = "USA";
countries[2] = "Mexico";
countries[0][0] = "Steve"; //Lives in Canada
countries[0][0][0] = "Linda"; //Daughter of Steve
countries[0][0][0][0] = "Steve JR"; // Kid of Linda
countries[0][0][0][0][0] = "Kriss"; //Steves Friend
...
$.each(countries...function(index, value){
tree[index].country = value;
$.each(grandfathers...function(key, value){
tree[index].country[key].grandfather = value;
}
等等,但这并没有给我想要的结果。我究竟做错了什么?还有比什么都拿走更有效的方法吗?
第三次编辑...
【问题讨论】:
-
var tree = new Array(); tree = {};可以压缩为var tree = {};。您应该提供您想要的输入和输出的示例。您的问题似乎是创建适当的结构,而不是 JSON(这只是JSON.stringify(value))。 -
这个例子没有意义。您正在尝试将值分配给字符串,就好像它们是数组一样。你实际上有什么输入?你真正想要什么 JSON 输出?
-
@Quentin 我已经编辑了我的答案,我有一个 JSON 输入,
标签: javascript json multidimensional-array