用javascript格式化/操作JSON响应
Formating / manipulating a JSON response in javascript
我有一个返回JSON对象的服务:
"[{"id":"1","name":"garage","parent":null},{"id":"2","name":"car","parent":"1"},{"id":"3","name":"engine","parent":"2"}]"
这就是Fiddler上的样子:
- JSON
|- {}
|-- id=1
|-- name=garage
|-- parent=(null)
|- {}
|-- id=2
|-- name=car
|-- parent=1
|- {}
|-- id=3
|-- name=engine
|-- parent=2
另一方面,我有一个JavaScript库,它期望有一个如下的对象:
elements: {
nodes: [
{ data: { id: '1', name: 'garage' } },
{ data: { id: '2', name: 'car' } },
{ data: { id: '3', name: 'engine' } }
],
edges: [
{ data: { id: '1', source: '1', target: '2' } },
{ data: { id: '2', source: '2', target: '3' } }
]
}
我尝试使用将JSON响应转换为数组
var jsonResponseAsArray = $.parseJSON(getJSON());
然后对其进行迭代以格式化其内容:
for (var i = 0; i < jsonResponseAsArray.length; i++) {...}
在这里面,我尝试了很多事情,比如创建对象和数组来操纵结构而不需要看。我不知道如何获得一些以[{…}]开头的元素,如nodes元素,而另一些仅以{}开头的元素(如de data元素)。
谢谢,
这就是我解决这个问题的方法。我相信有一个最好/更优雅的解决方案:
var jsonResponseAsArray = $.parseJSON(getJSON());
var elements = {}
var obj = { "nodes": [], "edges": [] };
for (var i = 0; i < jsonResponseAsArray.length; i++) {
var data = {};
var map = {};
var data1 = {};
var map1 = {};
if (jsonResponseAsArray[i].parent != null) {
map1["id"] = jsonResponseAsArray[i].id + jsonResponseAsArray[i].parent;
map1["source"] = jsonResponseAsArray[i].id;
map1["target"] = jsonResponseAsArray[i].parent;
data1['data'] = map1;
obj.edges.push(data1);
}
map["id"] = jsonResponseAsArray[i].id;
map["name"] = jsonResponseAsArray[i].name;
data['data'] = map
obj.nodes.push(data);
}
elements["elements"] = obj;
var elements = JSON.stringify(elements);
相关文章:
- 在不同的javascript数组中对json响应进行排序
- Laravel数据表无效的JSON响应
- 使用Backbone.js访问JSON响应的部分
- 不需要的JSON响应
- 跨多个域的json响应
- 将对Ajax PUT的json响应重定向到要由EL解析的JSP中
- handler没有为JSON响应正确填充模板
- 如何在phonegap应用程序中处理Ajax json响应
- 将JSON响应放入var中并输出
- 如何使用AngularJS将if语句conditon与json响应一起使用
- JS-通用解析JSON响应
- 将json响应格式化为父级和子级
- 从 JSON 响应解析数据
- 单个和多个 JSON 响应
- 将日期作为从 Web API 到 angularJS 的 json 响应
- 在 JSX Render for React.js 中遍历 JSON 响应
- 使用 JavaScript 从 URL 获取 JSON 响应
- 使用来自AngularJS的Web API JSON响应-错误:应为和数组,但得到了一个对象
- 生成动态json响应的Javascript
- 如何将json响应的一部分转换为map