无法使用Java创建正确的JSON

时间:2016-03-22 08:31:23

标签: java json

我的情况很疯狂。我正在创建一个JSON对象,从服务器端端完全没问题。但是,由于额外的“这是通过服务器端创建的,这是不可接受的。我的服务器端代码是

playAction('.' + val1);

正在打印

String id = "123";
    String hql = "FROM Person E WHERE E.userId = "+id;
    Query query = session.createQuery(hql);
    List<?> results = query.list();     
    JSONArray arr = new JSONArray();
    JSONObject obj = new JSONObject();
    for(int i = 0; i < results.size(); i++) {
        Personalisation p = (Personalisation) results.get(i);
        obj.put("courseId", p.getCourseId());
        obj.put("CourseValue", p.getCourseValue());
    }
    System.out.println(obj);

从服务器端可以很好。您可以看到额外的“{{”颜色标记,当我尝试在客户端解析相同的东西时,它不会因非法字符而接受。我该怎么办?

这也是小提琴http://jsfiddle.net/hLkUz/43/

3 个答案:

答案 0 :(得分:4)

p.getCourseValue()似乎返回一个包含JSON的字符串:

{"color": "green","value": "#f00"}

现在当你将它放入JSONObject并序列化对象时,它将再次转义JSON字符串。

而不是将课程值作为JSON归入JSONObject,而不是自己建立课程价值对象。

答案 1 :(得分:0)

据我所知,你无法将JSON对象解析为字符串 使用

 System.out.println(obj.toString());

而不是

System.out.println(obj);

答案 2 :(得分:0)

能够使用

构建
new JsonParser().parse(p.getCourseValue()).getAsJsonObject()