gpt4 book ai didi

json - 列出JSON的所有键和值

转载 作者:行者123 更新时间:2023-12-05 09:24:37 25 4
gpt4 key购买 nike

假设我有一些像下面这样的 JSON:

{
"items":
{
"item":
[
{
"id": "0001",
"type": "donut",
"name": "Cake",
"ppu": 0.55,
"batters":
{
"batter":
[
{ "id": "1001", "type": "Regular" },
{ "id": "1002", "type": "Chocolate" },
{ "id": "1003", "type": "Blueberry" },
{ "id": "1004", "type": "Devil's Food" }
]
},
"topping":
[
{ "id": "5001", "type": "None" },
{ "id": "5002", "type": "Glazed" },
{ "id": "5005", "type": "Sugar" },
{ "id": "5007", "type": "Powdered Sugar" },
{ "id": "5006", "type": "Chocolate with Sprinkles" },
{ "id": "5003", "type": "Chocolate" },
{ "id": "5004", "type": "Maple" }
]
},

...

]
}
}

我想要一个函数来返回制表符分隔数据列表(其中 -> 是一个制表符)。像这样:

items.item.length -> 1
items.item[0].id -> 0001
items.item[0].type -> donut
items.item[0].name -> Cake
items.item[0].ppu -> 0.55
items.item[0].batters.batter.length -> 4
items.item[0].batters.batter[0].id -> 1001
items.item[0].batters.batter[0].type -> Regular
items.item[0].batters.batter[1].id -> 1002
items.item[0].batters.batter[1].type -> Chocolate
items.item[0].batters.batter[2].id -> 1003
items.item[0].batters.batter[2].type -> Blueberry
items.item[0].batters.batter[3].id -> 1004
items.item[0].batters.batter[3].type -> Devil's Food
items.item[0].topping.length -> 7
items.item[0].topping[0].id -> 5001
items.item[0].topping[0].type -> None
items.item[0].topping[0].id -> 5002
items.item[0].topping[0].type -> Glazed

...

我在想类似的东西

function json2txt(obj) {
var txt = '';
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if ("object" == typeof(obj[key])) {
json2txt(obj[key]);
} else txt += obj + '\t' + obj[key] + '\r';
}
}
}

“糟糕!您的修改无法提交,因为:

您的帖子没有太多上下文来解释代码部分;请更清楚地解释您的情况。”

这也很令人沮丧。

最佳答案

您的递归函数走在了正确的轨道上。不过,您需要向该函数添加一个参数——它需要知道对象中当前点的路径。

此外,使用\n,而不是\r

var inputObject = {
items: {
foo: [ 'apples', 'oranges', 'peaches' ],
bar: 'baz',
spam: 'eggs'
}
};
function json2txt(obj, path)
{
var txt = '';
for (var key in obj)
{
if (obj.hasOwnProperty(key))
{
if ('object' == typeof(obj[key]))
{
txt += json2txt(obj[key], path + (path ? '.' : '') + key);
}
else
{
txt += path + '.' + key + '\t' + obj[key] + '\n';
}
}
}
return txt;
}
json2txt(inputObject, '');

有趣的问题!

对于您的示例数据,我的代码给出:

items.item.0.id 0001
items.item.0.type donut
items.item.0.name Cake
items.item.0.ppu 0.55
items.item.0.batters.batter.0.id 1001
items.item.0.batters.batter.0.type Regular
items.item.0.batters.batter.1.id 1002
items.item.0.batters.batter.1.type Chocolate
items.item.0.batters.batter.2.id 1003
items.item.0.batters.batter.2.type Blueberry
items.item.0.batters.batter.3.id 1004
items.item.0.batters.batter.3.type Devil's Food
items.item.0.topping.0.id 5001
items.item.0.topping.0.type None
items.item.0.topping.1.id 5002
items.item.0.topping.1.type Glazed
items.item.0.topping.2.id 5005
items.item.0.topping.2.type Sugar
items.item.0.topping.3.id 5007
items.item.0.topping.3.type Powdered Sugar
items.item.0.topping.4.id 5006
items.item.0.topping.4.type Chocolate with Sprinkles
items.item.0.topping.5.id 5003
items.item.0.topping.5.type Chocolate
items.item.0.topping.6.id 5004
items.item.0.topping.6.type Maple

关于json - 列出JSON的所有键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10221229/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com