如何删除JSON数据?

时间:2017-06-03 02:32:24

标签: javascript php json

我有以下JSON结构:

[{
    "type": 0,
    "id": 1,
    "children": [{
        "type": 0,
        "id": 14
    },
    {
        "type": 0,
        "id": 1
    }]
},
{
    "type": 0,
    "id": 16,
    "children": [{
        "type": 0,
        "id": 15,
        "children": [{
            "type": 0,
            "id": 13
        },
        {
            "type": 0,
            "id": 17
        },
        {
            "type": 0,
            "id": 18
        }]
    }]
}]

如何从JSON中删除数据"type":0,"id":15

2 个答案:

答案 0 :(得分:1)

对于javascript,

var input = [{"type":0,"id":1,"children":[{"type":0,"id":14},{"type":0,"id":1}]},{"type":0,"id":16,"children":[{"type":0,"id":15,"children":[{"type":0,"id":13},{"type":0,"id":17},{"type":0,"id":18}]}]}];

function filter(input) {
  return input.filter( (obj) => {
     if (obj.children) obj.children = filter(obj.children);
     return !(obj.type === 0 && obj.id === 15);
  });
}

var result = filter(input);

console.log(result);

这样type = 0&对于id = 15内的任何级别层次结构,children将被递归删除。

答案 1 :(得分:0)

通过查看您的JSON代码,您可以在数组中拥有2个顶级对象/属性。在其中一个对象中包含一个内部属性,其中包含要删除的对象,即{type:0,id:15,children:[....]}

每次有嵌套属性时,您都必须使用点语法或括号访问该内部属性的值。 例如,这是您的JSON数据:

[
  {
    "type": 0,
    "id": 1,
    "children": [
      {
        "type": 0,
        "id": 14
      },
      {
        "type": 0,
        "id": 1
      }
    ]
  },
  {
    "type": 0,
    "id": 16,
    "children": [
      {
        "type": 0,
        "id": 15,
        "children": [
          {
            "type": 0,
            "id": 13
          },
          {
            "type": 0,
            "id": 17
          },
          {
            "type": 0,
            "id": 18
          }
        ]
      }
    ]
  }
]

假设你的整个数组被称为“soda”: 你这样访问它:

soda [1] .children [0],这将成为获取数据的路径(数组通过索引记住它们的内部“部分”,如[0]或[1]或[55]和对象用点表示法得到它们的内部部分。然后像我的例子那样使用属性名称。

苏打水[1]因为苏打水是一个阵列。然后它使用点符号。孩子,因为孩子是苏打水的属性[1]。由于soda [1] .children再次成为一个数组,我们必须再次使用索引,并且你的对象是该数组中唯一的元素(记住javascript开始时0索引,意思是0是第一项,1是第二项,等等)所以我们必须再次使用对数组使用索引的规则,这就是soda [1] .children [0]并且你想要你的对象!