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にはinputまたはtextareaページ上にあると想定しています。)

配列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 に答える