如何解析具有多行/结果的JSON

How to parse JSON with multiple rows/results

本文关键字:结果 JSON 何解析      更新时间:2023-09-26

我不知道这是否是格式错误的JSON字符串,但我不知道如何解析每个结果以获取数据。

这是我的$.ajax函数的data.d响应(它在代码背后(C#)中调用WebMethod):

{"Row":[
{"ID1":"TBU9THLCZS","Project":"1","ID2":"Y5468ASV73","URL":"http://blah1.com","Wave":"w1","StartDate":"18/06/2015 5:46:41 AM","EndDate":"18/06/2015 5:47:24 AM","Status":"1","Check":"0"},
{"ID1":"TBU9THLCZS","Project":"2","ID2":"T7J6SHZCH","URL":"http://blah2.com","Wave":"w1","StartDate":"23/06/2015 4:35:22 AM","EndDate":"","Status":"","Check":""}
]}

在我看过的所有例子中,只有一两个显示了我的"Row"所在的位置,并且解决方案没有关联,比如一个人在最后一个数组后面有一个逗号。

如果不是直接的答案,我会很乐意提供一些建议。

我尝试过各种各样的回应组合。行,响应[0],每个使用$.,但我就是拿不到。

编辑,这是我的ajax调用:

$.ajax({
    url: "Mgr.aspx/ShowActivity",
    type: "POST",
    data: JSON.stringify({
        "ID": "null"
    }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {
        var data = response.hasOwnProperty("d") ? response.d : response;
        console.log(data);
    },
    error: function (xhr, ajaxOptions, thrownError) {
        $('#lblResErr').html('<span style="color:red;">' + thrownError);
    }
});

目前,我正试图将ID1值和ID2值输入控制台。

编辑(解决):感谢YTAM和Panagiotis!

success: function (response) {
    var data = response.hasOwnProperty("d") ? response.d : response;
    data = JSON.parse(data);
    console.log(data);
}

现在控制台向我显示了一个由两个对象组成的数组,现在我知道该如何处理它们了!!

首先必须使用JSON.parse 解析字符串

var data=JSON.parse(rowData);

然后你会得到下面给出的对象,

data = {
"Row": [
{
  "ID1":"TBU9THLCZS",
  "Project":"1",
  "ID2":"Y5468ASV73",
  "URL":"http://blah1.com",
  "Wave":"w1",
  "StartDate":"18/06/2015 5:46:41 AM",
  "EndDate":"18/06/2015 5:47:24 AM",
  "Status":"1",
  "Check":"0"
},
{
  "ID1":"TBU9THLCZS",
  "Project":"2",
  "ID2":"T7J6SHZCH",
  "URL":"http://blah2.com",
  "Wave":"w1",
  "StartDate":"23/06/2015 4:35:22 AM",
  "EndDate":"",
  "Status":"",
  "Check":""
}
]}

这里我给出了两个选项,要么直接从数据变量中检索数据,要么通过循环检索数据。

data.row[0].ID1
data.row[0].Project
data.row[0].ID2

等等

使用环路,

var result = json.row;
for (var i = 0; i < result.length; i++) {
  var object = result[i];
   for (property in object) {
    var value = object[property];
  }
}

希望这能有所帮助。

您可能从web方法获得json字符串,而不是实际的JavaScript对象。通过以下方式将其解析为JavaScript对象进行

var data = JSON.parse(response); 

那么您将能够在data.Row 上迭代