我想将json格式的输出转换为另一个。 我怎么能这样做?
实施例: 老杰森
"data":
[
{
"id" : "e49e183e-9325-4e62-8eda-7e63fb7cdbbd",
"name" : "test"
},
{
"id" : "ac310894-d808-447b-a189-d07edb7f6dd7",
"name" : "test2"
}
]
我想要的新Json没有大括号,只有支架
"aaData":
[
[
"e49e183e-9325-4e62-8eda-7e63fb7cdbbd","test"
],
[
"ac310894-d808-447b-a189-d07edb7f6dd7","test2"
]
]
答案 0 :(得分:8)
您可以循环浏览项目并将它们推送到新对象中:
var len = old.data.length,
newData = {aaData:[]},
i;
for ( i=0; i < len; i+=1 ) {
newData.aaData.push( [ old.data[ i ].id, old.data[ i ].name] );
}
示例:http://jsfiddle.net/q2Jzb/1/
您可能会将这些传递给DataTables(因为您使用名称aaData),请注意DataTables takes an object as the configuration,它与JSON不同。
答案 1 :(得分:1)
尝试以下方法;
function format(oldFormat) {
var newFormat = [];
oldFormat = oldFormat.data;
for (var i=0;i<oldFormat.length;i++) {
newFormat.push([oldFormat[i].id], oldFormat[i].name);
};
return {
aaData: newFormat
};
}
然后你打电话使用函数;
var newStuff = format(varPointingToOldStuff);
该函数期望接收JavaScript对象而不是JSON,并返回JavaScript对象而不是JSON。 Make sure you understand the differences between a JSON (string) and a JavaScript object
您可以使用JSON.parse(yourJsonString)
将JSON字符串转换为JavaScript对象,并可以使用JSON.stringify(yourJavaScriptObject)
将JavaScript对象转换为JSON字符串。
答案 2 :(得分:1)
您可以将其作为字符串替换:
newJSON = oldJSON.replace(/"id" : |"name" : /g, "")
.replace(/{/g, "[").replace(/}/g, "]");
但那有些狡猾。另一种方法是解析JSON,然后处理结果对象,然后将结果转回JSON:
var oldData = JSON.parse(oldJSON)["data"],
aaData = [],
arr,
newJSON,
i, k;
for (i = 0; i < data.length; i++) {
arr = [];
for (k in data[i])
arr.push(data[i][k]);
aaData.push(arr);
}
newJSON = JSON.stringify({ "aaData" : aaData });
其中oldJSON
是您问题中包含旧格式的字符串。 (我只是遍历每个数组项中的属性,而不是假设它们总是具有“id”和“name”属性。)
答案 3 :(得分:1)
您可以使用JavaScript将输入数据转换为新的对象形式,然后使用JSON JavaScript库(JSON.stringify函数,请参见此处http://www.json.org/js.html)将新创建的对象转换为适当的JSON 。以下代码使用jQuery和JSON库来解决您的问题。使用jQuery纯粹是可选的,还有其他库可以制作JSON。
<pre id="code"></pre>
<script type="text/javascript">
$(document).ready(function () {
var old = { "data":
[
{
"id": "e49e183e-9325-4e62-8eda-7e63fb7cdbbd",
"name": "test"
},
{
"id": "ac310894-d808-447b-a189-d07edb7f6dd7",
"name": "test2"
}
]
};
var newData = [];
for (var i = 0, l = old.data.length; i < l; i++) {
var o = old.data[i];
newData[i] = [o.id, o.name];
}
$("#code").text(JSON.stringify(newData));
});
</script>
答案 4 :(得分:1)
答案 5 :(得分:0)
您还可以使用JSON路径,并在数据集上使用查询($ .. id)来产生您似乎要查找的内容。是否结帐https://jsonpath.com/?然后在左侧框中输入数据,并在文本框中输入JSONPath语法的$ .. id