我有JSON文件,其中包含500个对象的数组,如下所示:
{
"books":[
{
"title":"Title 1",
"year":"2012",
"authors":"Jack ; George",
},
{
"title":"Title 2",
"year":"2010",
"authors":"Leonard ; Robin",
},
...
如何在js或python中循环遍历此文件并更改" authors"每个对象看起来像这样:
"authors":["Jack" , "George"]
谢谢。
答案 0 :(得分:1)
您只需将authors
分割为;
即可。也请在每位作者上调用trim
以删除多余的空格。
const books = [
{
"title":"Title 1",
"year":"2012",
"authors":"Jack ; George",
},
{
"title":"Title 2",
"year":"2010",
"authors":"Leonard ; Robin",
}
];
books.forEach(item => {
item.authors = item.authors.split(';')
.map(author => author.trim());
});
console.log(books);

答案 1 :(得分:1)
我认为这段代码应该是必要的。
var obj = {
"books":[
{
"title":"Title 1",
"year":"2012",
"authors":"Jack ; George",
},
{
"title":"Title 2",
"year":"2010",
"authors":"Leonard ; Robin",
}]
};
for(var i in Object.keys(obj.books)){
obj.books[i].authors = obj.books[i].authors.split(" ; ")
}
答案 2 :(得分:0)
如果你使用python,你可以试试这个:
data = {
"books":[
{
"title":"Title 1",
"year":"2012",
"authors":"Jack ; George",
},
{
"title":"Title 2",
"year":"2010",
"authors":"Leonard ; Robin",
}
]
}
for k1 in data:
for k2 in data[k1]:
k2['authors'] = [x.strip() for x in k2['authors'].split(';')]
print(data)
哪个输出:
{'books': [{'title': 'Title 1', 'year': '2012', 'authors': ['Jack', 'George']}, {'title': 'Title 2', 'year': '2010', 'authors': ['Leonard', 'Robin']}]}
答案 3 :(得分:0)
试试这个: -
for i in a["books"]:
i['authors'] = [x.strip() for x in (i['authors'].split(";"))]
print(a) #your output