2011-12-21 5 views
0

У меня есть Java-код, который будет распечатывать JSON из сервлета:Генерация ответов JSON комплекс древовидные

JSONArray arrayObj = new JSONArray(); 
arrayObj.put("MCA"); 
arrayObj.put("Amit Kumar"); 
arrayObj.put("19-12-1986"); 
arrayObj.put(24); 
arrayObj.put("Scored"); 
arrayObj.put(new Double(66.67)); 
PrintWriter out = response.getWriter(); 
out.println(arrayObj); 

распечатает страницу в браузере, который выглядит как:

[ "MCA »,„Амит Кумар“,„19-12-1986“, 24,„Состав“, 66,67]

Мне нужно, чтобы иметь возможность создавать более сложные, древовидные структуры данных, такие как

[{ 
task:'Project: Shopping', 
duration:13.25, 
user:'Tommy Maintz', 
iconCls:'task-folder', 
expanded: true, 
children:[{ 
    task:'Housewares', 
    duration:1.25, 
    user:'Tommy Maintz', 
    iconCls:'task-folder', 
    children:[{ 
     task:'Kitchen supplies', 
     duration:0.25, 
     user:'Tommy Maintz', 
     leaf:true, 
     iconCls:'task' 
    },{ 
     task:'Groceries', 
     duration:.4, 
     user:'Tommy Maintz', 
     leaf:true, 
     iconCls:'task' 
    },{ 
     task:'Cleaning supplies', 
     duration:.4, 
     user:'Tommy Maintz', 
     leaf:true, 
     iconCls:'task' 
    },{ 
     task: 'Office supplies', 
     duration: .2, 
     user: 'Tommy Maintz', 
     leaf: true, 
     iconCls: 'task' 
    }] 
}, { 
    task:'Remodeling', 
    duration:12, 
    user:'Tommy Maintz', 
    iconCls:'task-folder', 
    expanded: true, 
    children:[{ 
     task:'Retile kitchen', 
     duration:6.5, 
     user:'Tommy Maintz', 
     leaf:true, 
     iconCls:'task' 
    },{ 

Есть ли какие-либо методы или методы с помощью API org.json? Я могу использовать для генерации этого древовидного ответа JSON? В частности, мне интересно, есть ли что-нибудь, что я могу использовать для обработки создания расширенных узлов, дочерних элементов и листовых узлов?

+0

Существуют и другие API, которые уже обеспечивают лучшую поддержку структур дерева. Например. Джексон (http://wiki.fasterxml.com/JacksonHome) или Gson (http://sites.google.com/site/gson/gson-user-guide). – proko

ответ

2

Вы хотите использовать JSONObject, чтобы создать карту ключей для любого произвольного значения, включая JSONArrays или даже другие JSONObjects.

0

Если все ваши данные объекты знают, как превратить себя в JSONObject (или любой другой), вы можете собрать дерево объектов и вызвать toJSON на корневом узле , Это заполняет «плоских» членов и создает ваших «детей» JSONArray с результатами подзадачи toJSON() звонков.

Это базовая рекурсия дерева. Конечно, если ваши данные еще не структурированы таким образом, это не очень помогает.

public interface JSONThing { 
    public JSONObject toJSON(); 
} 
Смежные вопросы