我有一堆JSON文件,数千种不同的模式。使用GenSON
(the Python JSON schema generator),我设法为每个输入文件创建模式文件。现在,我想要做的是将所有这些不同的文件标准化为一个定义的模式。这是一个例子:
输入
{
"name": "Bob Odenkirk",
"title": "Software Engineer",
"location": {
"locality": "San Francisco",
"region": "CA",
"country": "United States"
},
"age": 62,
"status": "Active"
}
输出
{
"names": ["Bob Odenkirk"],
"occupations": ["Software Engineer"],
"locations": ["San Francisco, CA"]
}
基本上,我正在寻找一种语言无关的方法(即,我不关心使用什么编程语言)来定义如何将输入JSON文件解析为输出JSON文件。
答案 0 :(得分:1)
我不确定你的期望如下。很久以前我已经创建了平面对象和输出格式对象。它将返回填充数据的输出格式对象。
var input = {
"name": "Bob Odenkirk",
"title": "Software Engineer",
"location": {
"locality": "San Francisco",
"region": "CA",
"country": "United States"
},
"age": 62,
"status": "Active"
};
var outputFormat = {
"name": "name",
"occupations": "title",
"locations": "location.locality, location.region"
};
var flatInput = {};
function generateFlatInput(input, parent){
for (var prop in input) {
if(input.hasOwnProperty(prop) && typeof input[prop] === 'object')
flatInput = generateFlatInput(input[prop], parent + prop + '.');
else
flatInput[parent + prop] = input[prop];
}
return flatInput;
}
function generateOutput(input, outputFormat, delimiter){
input = generateFlatInput(input, '');
for (var prop in outputFormat) {
var fields = outputFormat[prop].split(delimiter);
var fieldValue = [];
for(i = 0; i < fields.length; i++){
if(!input.hasOwnProperty(fields[i].trim())) continue;
fieldValue.push(input[fields[i].trim()]);
}
outputFormat[prop] = fieldValue.join(delimiter);
}
return outputFormat;
}
console.log(generateOutput(input, outputFormat, ', '));
答案 1 :(得分:1)
Jolt Spec
[
// First build the "city, state" string for location
{
"operation": "modify-default-beta",
"spec": {
"location": {
"locConcat": "=concat(@(1,locality),', ',@(1,region))"
}
}
},
// Then map the fields as needed to positions in an output json
{
"operation": "shift",
"spec": {
"name": "name[0]",
"title": "occupations[0]",
"location": {
"locConcat": "locations[0]"
}
}
}
]
答案 2 :(得分:0)
我认为解析许多JSON文件的最好,最快,最简单的方法是使用python
我正在做一些类似于你的项目并遇到同样的问题。
我发现这个网站教会了如何使用python实际解析JSON文件。事实证明,python上有一个名为json的库(使用pip来下载json依赖项),它可以启用JSON文件处理。如果你已经有了一个python编辑器,那么使用 Jolt 这个方法会更容易,更快捷
请访问此网站了解更多信息:https://code.tutsplus.com/tutorials/how-to-work-with-json-data-using-python--cms-25758
你也可以使用JS,它再次比Jolt快。这是网站:https://docs.microsoft.com/en-us/scripting/javascript/reference/json-parse-function-javascript。这很简单,因为您可以使用JSON.parse()
函数