-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具有包含第二个嵌入 JSON 字符串的字符串值。很奇怪的结构。

如果您真的以 JSON 形式接收它,那么:

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

实例| 资源

但是,如果您通过ajax(例如)检索该信息,jQuery 很可能已经parseJSON为您完成了第一个操作,在这种情况下您只需要执行第二个操作:

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 回答