Gson 生成 json with ",js throw error

Gson generate json with ",js throw error

我使用 Gson 创建如下字符串: 新 Gson.toJson(englishResult); englishResult 是 List> 类型。 但结果是这样的:

[{"name":"en3","value":234},{"name":"en4","value":135},{"name":"en1","value":335},{"name":"en2","value":310},{"name":"en5","value":1548}]

然后我调用js方法抛出错误

Uncaught SyntaxError: Unexpected token &

我搜索goole,它告诉我"很好json,因为我可以包含escape,但是为什么js会抛出错误?如何解决? 请告诉我一些建议,非常感谢

我的服务器代码是:

 public static void pieTestWithData(){

        Map<String, Integer> result = getChineseResultMap();
        List<Map<String, Object>> englishResult = getFormatteredPieData();
        renderArgs.put("resultData", getJson(englishResult));
        render();
    }

 private static String getJson(List<Map<String, Object>> englishResult) {
        Gson gson = new GsonBuilder()
                .disableHtmlEscaping()
                .create();
        return gson.toJson(englishResult);
    }

(张贴在这里是因为Whosebug评论被限制在264个字符以内)

@wangyiran

我无法重现。这是我的测试:

public class Toto {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

然后

    @Test
    public void testMe() {
        List<Map<String, Object>> englishResult = new ArrayList<>();
        Toto toto = new Toto();
        toto.setName("Toto it's me");
        Map<String, Object> m = new HashMap<String, Object>();
        m.put("mapKey", toto);
        englishResult.add(m);

        Gson gson = new Gson();
        String jsonEnglishResult = gson.toJson(englishResult);
        System.out.println(jsonEnglishResult);
    }

测试输出:

[{"mapKey":{"name":"Toto it\u0027s me"}}]

我使用的是 Gson 版本 2.3.1