用Js操作json
Manipualte json with Js
我有一个 json 如下。您可以看到 same here.
的树视图
{
"results": {
"collection1": [
{
"property1": {
"href": "http://www.somesite.com/neatobambino/2015/12/29/Little-Girl-Uses-Dogs-Tail-as-a-Paintbrush/",
"text": "Little Girl Uses Dog's Tail as a Paintbrush"
},
"property5": {
"alt": "",
"src": "",
"text": ""
},
"index": 1,
"url": "http://www.somesite.com/"
},
{
"property1": {
"href": "http://www.somesite.com/2015/09/11/20-Alternative-Housing-Solutions-for-the-Homeless/",
"text": "20 Alternative Housing Solutions for the Homeless"
},
"property5": [
{
"alt": "",
"src": "http://www.somesite.com/page/data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",
"text": ""
},
{
"alt": "",
"src": "http://www.somesite.com/page/data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",
"text": ""
}
],
"index": 2500,
"url": "http://www.somesite.com/page/84"
}
]
}
}
如你所见,结果是里面有两层。在 results
中,我们又得到了 collection1
。整个 json 在一个对象 data
中。如何将 collection1
中的全部数据直接移动到 results
?
类似的东西。
var data.results = data.results.collections;
你能做到吗?
创建新对象并尝试赋值
var newData = {
"results": data.results.collections;
}
是的,应该可以,检查这个 fiddle
obj.results = obj.results.collection1;
console.log( obj );
您所要做的就是一个新变量,您可以在其中存储所需的值,在这种情况下,您希望将值 data.results.collection1 存储在名为 results 的变量中,因此:
var results = data.results.collection1;
如果您正在使用 Jquery ,您可以使用
var obj=$.extend({},data.results.collection1)
$.extend 进行深度复制,因此 obj 将成为独立对象。
如果你用的是原生JS,那就用
var obj=Object.create(data.results.collection1)
要么
var copy = Object.assign({}, data.results.collection1); // 这是 ES6 特定的
我有一个 json 如下。您可以看到 same here.
的树视图{
"results": {
"collection1": [
{
"property1": {
"href": "http://www.somesite.com/neatobambino/2015/12/29/Little-Girl-Uses-Dogs-Tail-as-a-Paintbrush/",
"text": "Little Girl Uses Dog's Tail as a Paintbrush"
},
"property5": {
"alt": "",
"src": "",
"text": ""
},
"index": 1,
"url": "http://www.somesite.com/"
},
{
"property1": {
"href": "http://www.somesite.com/2015/09/11/20-Alternative-Housing-Solutions-for-the-Homeless/",
"text": "20 Alternative Housing Solutions for the Homeless"
},
"property5": [
{
"alt": "",
"src": "http://www.somesite.com/page/data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",
"text": ""
},
{
"alt": "",
"src": "http://www.somesite.com/page/data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",
"text": ""
}
],
"index": 2500,
"url": "http://www.somesite.com/page/84"
}
]
}
}
如你所见,结果是里面有两层。在 results
中,我们又得到了 collection1
。整个 json 在一个对象 data
中。如何将 collection1
中的全部数据直接移动到 results
?
类似的东西。
var data.results = data.results.collections;
你能做到吗?
创建新对象并尝试赋值
var newData = {
"results": data.results.collections;
}
是的,应该可以,检查这个 fiddle
obj.results = obj.results.collection1;
console.log( obj );
您所要做的就是一个新变量,您可以在其中存储所需的值,在这种情况下,您希望将值 data.results.collection1 存储在名为 results 的变量中,因此:
var results = data.results.collection1;
如果您正在使用 Jquery ,您可以使用 var obj=$.extend({},data.results.collection1)
$.extend 进行深度复制,因此 obj 将成为独立对象。
如果你用的是原生JS,那就用
var obj=Object.create(data.results.collection1) 要么 var copy = Object.assign({}, data.results.collection1); // 这是 ES6 特定的