Javascript 将JSON对象转换为另一种格式
我想将json格式的输出转换为另一个输出。 我怎么能做到 例如: 旧json 我想要的新Json,没有大括号,只有带括号的Javascript 将JSON对象转换为另一种格式,javascript,Javascript,我想将json格式的输出转换为另一个输出。 我怎么能做到 例如: 旧json 我想要的新Json,没有大括号,只有带括号的 "aaData": [ [ "e49e183e-9325-4e62-8eda-7e63fb7cdbbd","test" ], [ "ac310894-d808-447b-a189-d07edb7f6dd7","test2" ] ] 尝试以下方法 function format(oldFormat) {
"aaData":
[
[
"e49e183e-9325-4e62-8eda-7e63fb7cdbbd","test"
],
[
"ac310894-d808-447b-a189-d07edb7f6dd7","test2"
]
]
尝试以下方法
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
};
}
函数期望接收一个JavaScript对象而不是JSON,并返回一个JavaScript对象而不是JSON
您可以使用
JSON.parse(yourJsonString)
将JSON字符串转换为JavaScript对象,也可以使用JSON.stringify(yourJavaScriptObject)
将JavaScript对象转换为JSON字符串。您只需循环遍历这些项并将它们推送到一个新对象中即可:
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] );
}
var len=old.data.length,
newData={aaData:[]},
我
对于(i=0;i
例如:
您可能正在将它们传递给DataTables(因为您使用的名称是aaData),请注意DataTables与JSON不同。您可以将其作为字符串替换:
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 });
var oldData=JSON.parse(oldJSON)[“data”],
aa数据=[],
啊,,
newJSON,
i、 k;
对于(i=0;i
其中,
oldJSON
是问题中使用旧格式的字符串。(我只是循环了每个数组项中的属性,而不是假设它们总是有“id”和“name”属性。)您可以使用JavaScript将输入数据转换为新形式的对象,然后使用JSON JavaScript库(JSON.stringify函数,请参阅此处的更多信息)将新创建的对象转换为正确的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>
$(文档).ready(函数(){
var old={“数据”:
[
{
“id”:“e49e183e-9325-4e62-8eda-7e63fb7cdbbd”,
“名称”:“测试”
},
{
“id”:“ac310894-d808-447b-a189-d07edb7f6dd7”,
“名称”:“test2”
}
]
};
var newData=[];
for(var i=0,l=old.data.length;i
您还可以使用JSON路径,并使用数据集上的查询($…id)生成您想要的内容。结账并在左侧框中输入数据,在文本框中输入$..id,以获取JSONPath语法使用JSONata库的另一个答案:
您想要的东西可以通过以下方式轻松实现:
$.[id, name]
有关实时演示,请参阅:
这不是很有效-新旧格式之间是否都应该有一对大括号?我需要的正是第二个大括号。第二个格式不是有效的JSON,因此不能使用Javascript JSON库。您可以
JSON.stringify()
您的JSON对象,然后执行字符串替换,将所有{
替换为[
。我想说的是,上面的JSON不是有效的JSON,除非它在整件事情周围有一个小括号,但是考虑到你接受的答案根本没有使用JSON,我猜你是想问JavaScript对象而不是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>
$.[id, name]