jquery将String转换为Object

时间:2016-05-25 14:02:04

标签: javascript jquery json

我正在尝试使用从.jsp文件收到的正确JSON格式从字符串创建JSON对象。 我得到字符串并将其转换如下:

try{
        var jsonStringer = JSON.stringify(mazeFromServer);
        var obj = JSON.parse(jsonStringer);
    }catch (e){
        window.alert(e);
    }

这没有错误。 当我尝试操纵或从该对象获取信息时,例如:

var stringName = obj.Name;

虽然我的JSON中有一个Name字段,但没有任何反应。 我在JSON验证网站上检查了我的JSON,一切都很好。 有什么问题?

JSON看起来像这样:

{
        "Name": "Game1",
        "Level":"Two"};

当我自己声明JSON时,它运行正常。但是当我从外部来源以字符串格式接收它时,它不起作用。

任何想法?

编辑:

mazeFromServer是从外部服务器接收的字符串。 在我的servlet中,我将其添加如下:

JSONObject obj = new JSONObject();
    obj.put("progress", fromServer);

然后在我的jsp文件中运行此查询:

function getMaze(){
    $.getJSON("ProgressServlet", function(data){
        if (data.progress != current)
                mazeFromServer = data.progress;
            $('.mazeLabel').text(mazeFromServer);
        stopJSONCheck();
    })
}

mazeFromServer看起来如下:

{

"姓名":" Game1",   " Maze":" 111111111110000000",   "开始":{     " Row":3,     " Col":3   },   "结束":{     " Row":1,     " Col":3   } }

1 个答案:

答案 0 :(得分:0)

您应该按如下方式修改代码:

    try{
        var obj;

        if ( typeof mazeFromServer != "string" ) {
            obj = jsonStringer;
        } else {
            var jsonStringer = JSON.stringify(mazeFromServer);

            if ( typeof jsonStringer != "string" ) {
                throw("mazeFromServer cannot be converted to JSON string");
            }   
            obj = JSON.parse(jsonStringer);
        }
        if ( typeof obj != "object" ) {
            throw("'obj' is not an object, it is: " + typeof obj);
        }
    } catch (e) {
        window.alert(e);
    }