用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 特定的