我正在尝试使用从.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 } }
答案 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);
}