-1

私は以下のようなjsonを持っています、

{
    "Message": "{\"Errors\":[\"The message.\",\"The message.\"],\"Infos\":[\"The message.\"],\"Warnings\":[\"The message.\"],\"Successes\":[\"The message.\"]}"
}

以下のようなオブジェクトに変換したいのですが、

var obj = {
    Errors : new Array(),
    Infos : new Array(),
    Warnings : new Array(),
    Successes : new Array()
}

注: jsonを変更することはできません。

jQuery.parseJsonを使用しましたが、使用できませんでした。

4

1 に答える 1

3

あなたが投稿したものは珍しいです:それは単一のプロパティを持つオブジェクトを定義するJSONでMessageあり、2番目の埋め込まれたJSON文字列を含む文字列値を持っています。非常に奇妙な構造。

それを実際にJSONとして受け取っている場合は、次のようにします。

var outer = jQuery.parseJSON(theStringWithTheJSON);
var obj = jQuery.parseJSON(outer.Message);

実例| ソース

ajaxしかし、 (たとえば)経由でそれを取得している場合、jQueryはすでに最初parseJSONのビットを実行している可能性があります。その場合は、2番目のビットを実行する必要があります。

jQuery.ajax({
    /* ...other parameters here...*/
    success: function(data) {
        var obj = jQuery.parseJson(data.Message);
    }
});

実例| ソース

ただし、可能であれば、受信する文字列の構造を変更して、次のように二重にエンコードされないようにします。

{
    "Message": {
        "Errors": [
            "The message.",
            "The message."
        ],
        "Infos": [
            "The message."
        ],
        "Warnings": [
            "The message."
        ],
        "Successes": [
            "The message."
        ]
    }
}

次に、それを二重にデコードする必要はありません。最初のデコード(これもすでに実行されている可能性があります。コードが表示されていないため、わかりにくいです)が必要であり、を使用できますvar obj = yourVariable.Message;

実例| ソース

于 2013-03-24T09:41:13.827 に答える