如何从JSON响应中删除特定数据

How can i remove particular data from JSON response

本文关键字:删除 数据 响应 JSON      更新时间:2024-05-17

我得到了这样的服务响应。

Temp([
  {
    XXX: "2",
    YYY: "3",
    ZZZ: "4"
  },
  {
    XXX: "5",
    YYY: "6",
    ZZZ: "7"
  },
  {
    XXX: "1",
    YYY: "2",
    ZZZ: "3"
  }
]);

我想在javascript中删除这个响应消息的临时,如下所示。

[
  {
    XXX: "2",
    YYY: "3",
    ZZZ: "4"
  },
  {
    XXX: "5",
    YYY: "6",
    ZZZ: "7"
  },
  {
    XXX: "1",
    YYY: "2",
    ZZZ: "3"
  }
]

假设您从哪里获得JSONP响应的源是安全的,并且它始终提供正确的JSONP响应。

基本上,这意味着你会得到这样的回应:

functionName(jsonString)

就像你的例子:

Temp([{"XXX":"2","YYY":"3","ZZZ":"4"},{"XXX":"5","YYY":"6","ZZZ":"7"},{"XXX":"1","YYY":"2","ZZZ":"3"}])

提取JSON-方法1

如果您只需要响应函数参数中的对象,您可以这样做:

var jsonObject = null;
try
{
    var response = 'Temp([{"XXX":"2","YYY":"3","ZZZ":"4"},{"XXX":"5","YYY":"6","ZZZ":"7"},{"XXX":"1","YYY":"2","ZZZ":"3"}])';
    var temp = response.split('(');
    delete temp[0];
    temp = temp.join('(').split(')');
    delete temp[temp.length-1];
    temp = temp.join(')');
    temp = temp.substring(1, temp.length-1);
    jsonObject = JSON.parse(temp);
}
catch(ex)
{
}
console.log(jsonObject);

提取JSON-方法2使用这种方法实际上允许使用多个json对象作为函数参数。假设您不知道JSONP结果要调用什么方法名称。

所以我们可以做一些类似的事情:

var response = 'Temp([{"XXX":"2","YYY":"3","ZZZ":"4"},{"XXX":"5","YYY":"6","ZZZ":"7"},{"XXX":"1","YYY":"2","ZZZ":"3"}])';
try{
    var fnName = response.split('(')[0];
    var fn = new Function(fnName, response);
    var jsonObject = null;
fn(function(json){
    jsonObject = json;
});
    console.log(jsonObject);
}
catch(ex){
    console.log(ex.message);
}

首先我不认为这是JSON响应。正确的JSON响应应该是这样的。

{
"temp": [
    {
        "XXX": "2",
        "YYY": "3",
        "ZZZ": "4"
    },
    {
        "XXX": "5",
        "YYY": "6",
        "ZZZ": "7"
    },
    {
        "XXX": "1",
        "YYY": "2",
        "ZZZ": "3"
    }
  ]
}

然后可以使用提取数组。

response["temp"]