我的情况很疯狂。我正在创建一个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);
从服务器端可以很好。您可以看到额外的“{{”颜色标记,当我尝试在客户端解析相同的东西时,它不会因非法字符而接受。我该怎么办?
答案 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()