2016-03-22 2 views
0

Моя ситуация сумасшедшая. Я создаю объект JSON, который отлично подходит для сервера. Но, это не становится приемлемым из-за дополнительные ", который создается с помощью серверной стороны. Моей стороны сервера кодаНе удалось создать правильный JSON с использованием Java

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); 

Он печатает

{"CourseValue":"{\"color\": \"green\",\"value\": \"#f00\"}","courseId":"C5"} 

Это нормально с серверной стороной конца. Вы можете см дополнительными «перед {\» цвета тег, когда я пытаюсь разобрать то же самое на стороне клиента, он не принимает из-за незаконный характер. Что мне нужно сделать?

Вот скрипка тоже http://jsfiddle.net/hLkUz/43/

ответ

4

p.getCourseValue(), кажется, возвращает строку, содержащую JSON:

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

Теперь, когда вы кладете это в JSONObject и сериализовать объект будет избежать строку JSON снова.

Вместо того, чтобы вводить значение курса в качестве JSON tring в JSONObject, вам нужно самостоятельно создать объект значения курса.

+0

Я попытался он использует новый JSONObject (p.getCourseValue()). Тем не менее его не принимают. Любая информация? – Syed

0

, насколько я знаю, вы не можете разобрать объект JSON в виде строки, так использования

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

вместо

System.out.println(obj); 
+0

и использовать 'obj.put ("CourseValue", новый JSONObject (p.getCourseValue()));' при вставке –

+0

Сво не принимает новый JSONObject (p.getCourseValue()). Он говорит удалить аргумент – Syed

+0

, и я не беспокоюсь о SOP. Я беспокоюсь, потому что его не принимает клиент – Syed

0

Способен построить с помощью

new JsonParser().parse(p.getCourseValue()).getAsJsonObject() 
Смежные вопросы