如何将包含数组的json转换为javascript对象?

如何将包含数组的json转换为javascript对象?,javascript,jquery,json,Javascript,Jquery,Json,我有一个类似下面的json { "Message": "{\"Errors\":[\"The message.\",\"The message.\"],\"Infos\":[\"The message.\"],\"Warnings\":[\"The message.\"],\"Successes\":[\"The message.\"]}" } var obj = { Errors : new Array(), Infos : new Array(), Warn

我有一个类似下面的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()
}
我想把它转换成下面这样的对象

{
    "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,但我不能这样做。

您发布的内容很不寻常:它是一个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


|

这是因为json本身无效:复制粘贴您的字符串并转到控制台,键入json.parse(您的字符串)@frenchie我用电脑检查了一下。它是有效的。@frenchie:不,JSON是完全有效的。这很奇怪,但它是有效的。看起来JSON是无效的@T.J.Crowder:看起来是无效的;在我的回答中,看到通过JSON.parse的字符串的图片。我不能不做更改吗?通过使用正则表达式还是其他方式?我只知道你们都说了些什么。所以我不想这么做,我问了这个问题。“在这种情况下,我必须这么做。”sinanakyazici:我展示了如何在不做任何改变的情况下做到这一点。这正是答案的第一部分所做的。@sinanakyazici:我已经添加了所有三个选项的实例。