我正在使用GSON将List(Map(String,String))转换为json字符串并通过会话将其传递给前端。 GSON通过/"正确地逃避双重qoutes但解析json字符串时问题就出现了。
生成的JSON字符串是
[{"queueList": [{"Name": "Queue\"1\""}, {"Name": "Queue2"}, {"Name": "Queue3"}, {"Name": "Queue4"}]}]
错误我在解析时遇到chrome:" UnExpected Number"
我用来解析的代码如下
$(document).ready(function () {
var menuItemsStr = '[{"queueList": [{"Name": "Queue\"1\""}, {"Name": "Queue2"}, {"Name": "Queue3"}, {"Name": "Queue4"}]}]';
var menuItems = $.parseJSON(menuItemsStr);
$.each(menuItems[0].queueList, function (idx, obj) {
var listItemHTML = $("#listItem").clone().html();
listItemHTML = listItemHTML.replace(/\@QN/g, obj.Name);
$("#list").append(listItemHTML);
});
});
以下是上述代码与问题一起出现的小提琴链接 http://jsfiddle.net/vinaybvk/qvwL9246/2/
当JSON字符串具有\\"然后上面的小提琴按预期工作正常。
工作转义的JSON字符串如下:
var menuItemsStr = '[{"queueList": [{"Name": "Queue\\"1\\""}, {"Name": "Queue2"}, {"Name": "Queue3"}, {"Name": "Queue4"}]}]';
我无法在#34之前找到添加\\的方法。让行为发挥作用。我在java和javascript中都尝试过。
我在javascript中尝试做的是在评论中的上述小提琴
我在java中尝试做的是str.replaceAll(" \""," \\\\\"));用\\\"
请告诉我有没有办法纠正这个问题,或者我做错了什么。
感谢。
答案 0 :(得分:2)
不是引用字符串然后解析它,在这种情况下你可以这样做:
var menuItems = <s:property value="#session['jsonFormattedResult']" escapeHtml = "false" />;
会产生有效的对象。