将JSON对象转换为另一个-格式化它
Transform JSON Object to another - Format It
我想将JSON格式的输出转换为另一个。我该怎么做?
示例:旧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"
]
]
您可以循环浏览项目并将它们推送到一个新对象中:
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] );
}
示例:https://jsfiddle.net/q2Jzb/1/
您可能正在将这些传递给DataTables(使用名称aaData),请注意,DataTables采用对象作为配置,这与JSON不同。
只是使用JSONata库的另一个答案:
使用以下方法可以轻松实现您想要的内容:
$.[id, name]
对于现场演示,请查看:https://try.jsonata.org/UXYx6_xEh
尝试以下操作;
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
};
}
然后,您可以通过调用use函数;
var newStuff = format(varPointingToOldStuff);
函数期望接收JavaScript对象而不是JSON,并返回JavaScript对象而非JSON。确保您理解JSON(字符串)和JavaScript对象之间的区别。
您可以使用JSON.parse(yourJsonString)
将JSON字符串转换为JavaScript对象,也可以使用JSON.stringify(yourJavaScriptObject)
将JavaScript对象转换为JSON字符串。
您可以使用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>
您还可以使用JSON路径,并在数据集上使用查询($..id)来产生您想要的结果。结账https://jsonpath.com/?并在左侧框中输入您的数据和$。。JSONPath语法文本框中的id
您可以将其作为字符串替换:
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"answers"name"属性。)
JSONata以正确的方式
出口:
{ "aaData": data.[id, name] }
结果:
{
"aaData": [
[
"e49e183e-9325-4e62-8eda-7e63fb7cdbbd",
"test"
],
[
"ac310894-d808-447b-a189-d07edb7f6dd7",
"test2"
]
]
}
运行时间:https://try.jsonata.org/Pg51Kzp0c
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 使用clickToggle并在单击另一个元素时关闭元素
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 无法从jquery Mobile导航栏重定向到另一个页面
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 如何在鼠标悬停时在另一个图像上滑动图像.
- 导航到特定事件的另一个变量页面
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 如何在react js中将值从一个组件发送到另一个组件
- 按我自己的类克隆另一个元素的内容和顺序
- 在另一个函数中使用变量this
- 如何在react js中从一个页面导航到另一个页面
- 在另一个函数成功结束后调用该函数
- 将JSON对象转换为另一个-格式化它