有没有办法转换这个json文件?

时间:2018-03-09 22:45:09

标签: javascript python json

我有这个json文件:

{
  "spain" : "spanish.",
  "usa" : "english",
  "france" : "french",
  "italy" : "italian",
  ...
}

有没有一种快速的方法来转换下面的json文件?

[ 
 { "country": "spain", "language": "spanish." }
 { "country": "usa", "language": "english." }
 { "country": "france", "language": "french." }
 { "country": "italy", "language": "italian." }
  ...
}

6 个答案:

答案 0 :(得分:3)

<强>的Javascript

使用函数map

&#13;
&#13;
var countries = { "spain" : "spanish", "usa" : "english", "france" : "french", "italy" : "italian"  }
    result = Object.entries(countries).map(([c, l]) => ({country: c, language: l}));
    
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

答案 1 :(得分:2)

在Python中使用列表解析:

import json
with open("test.json", 'r') as f:
    test = json.load(f)
json.dumps([{"country": key, "language": test[key]} for key in test.keys()])

答案 2 :(得分:2)

JS:迭代输入对象的键,将每个键分配给输出对象的国家字段,并将相应的值分配给其语言字段。

&#13;
&#13;
var input = {"spain":"spanish"};
var output = [];
Object.keys(input).forEach((key, ind) => 
    { 
        output.push({country: key, language:input[key]}); 
    });
console.log(output);
&#13;
&#13;
&#13;

答案 3 :(得分:1)

暂时忘掉JSON部分。这里的难点在于将每个'spain': 'spanish'键值对转换为单独的词组,对吗?

首先,请考虑一下:

for country, language in d.items():

这为您提供了一个循环,每次循环时,您都会获得其中一个键值对,例如country = 'spain'language = 'spanish'。因此,您所要做的就是创建所需格式的字典,并将其附加到某些结果中。

使用该工具将硬盘编码转换为源代码并最后打印出列表。

完成并调试后,只需json.loads而不是硬编码,而json.dumps代替print。或者,如果您希望加载和保存文件而不是将stdin过滤到stdout,open文件名,然后在生成的文件中使用json.loadjson.dump

如果您遇到任何这些问题,您将在StackOverflow上提出一个很好的具体问题。

答案 4 :(得分:0)

In[2]: import json
  ...: 
  ...: result = []
  ...: with open('hmm.json', 'r') as f:
  ...:     json_dict = json.load(f)
  ...:     for country, language in json_dict.items():
  ...:         result.append({
  ...:             'country': country,
  ...:             'language': language
  ...:         })
  ...: 
In[3]: result
Out[3]: 
[{'country': 'spain', 'language': 'spanish.'},
 {'country': 'usa', 'language': 'english'},
 {'country': 'france', 'language': 'french'},
 {'country': 'italy', 'language': 'italian'}]

答案 5 :(得分:0)

试试这个:

var arr = [];
var keys = Object.keys(myobj);
for(var i in keys){
    var key = keys[i];
    if(key){
        arr.push({"country":key,"language":myobj[key]});
    }
}