0

我想在客户端解析数据,序列化后我将数据保存在输入字段中。

JavaScriptSerializer objJavaScriptSerializer = new JavaScriptSerializer();
string jsonString = objJavaScriptSerializer.Serialize(_statusVal);
jsonFmtStatusValue.Value = jsonString;

在客户端当我看到存储在输入字段中的数据字符串时,它就像这样

[
    {
        "nodeContentId": "1234_5678",
        "statusTypeId": "5678",
        "statusName": "Submitted by Customer",
        "dateTime": "/Date(1352745000000)/",
        "forceEmail": "on",
        "user": {
            "userId": "0",
            "userName": "admin"
        },
        "note": {
            "typeName": null,
            "dataValue": null
        }
    },
    {
        "nodeContentId": "1234_5678",
        "statusTypeId": "5678",
        "statusName": "Checked, Printed, Folded & Re-checked",
        "dateTime": "/Date(1353402060000)/",
        "forceEmail": "on",
        "user": {
            "userId": "0",
            "userName": "admin"
        },
        "note": {
            "typeName": null,
            "dataValue": null
        }
    }
]

我试图解析 Json 数据的代码是:

    var JsonData = $("#<%=jsonFmtStatusValue.ClientID %>").val();
    obj = jQuery.parseJSON(JsonData)
    alert(obj.nodeContentId);

我在警报框中得到的东西: 取消定义

无法弄清楚我应该使用什么来解析。

4

1 回答 1

4

(注意:我假设jsonFmtStatusValue最终是一个inputtextarea在页面上。)

在您的alert(obj.nodeContentId);,obj数组,而不是数组的对象。您最外层的 JSON 实体是一个数组,其中包含对象。

你可以看到第一个 nodeContentId是这样的:

alert(obj[0].nodeContentId);

...当然,其他人在随后的索引中,例如:

var obj = jQuery.parseJSON(JsonData);
var n;
for (n = 0; n < obj.length; ++n) {
    alert("obj[" + n + "].nodeContentId = " + obj[n].nodeContentId);
}
于 2012-11-24T11:12:02.957 回答