生成复杂的树状JSON响应

时间:2011-12-21 19:06:20

标签: java org.json

我有一些Java代码将从Servlet中打印出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”,“Amit Kumar”,“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'
    },{

我可以使用org.json API生成这种树状JSON响应的方法或技术吗?具体来说,我想知道是否可以使用任何东西来处理扩展节点,子节点和叶节点的创建?

3 个答案:

答案 0 :(得分:2)

您希望使用JSONObject创建任意值的键映射,包括JSONArrays甚至其他JSONObject。

答案 1 :(得分:0)

答案 2 :(得分:0)

如果所有数据对象都知道如何将自己转换为JSONObject(或其他),则可以组装对象树并在根节点上调用toJSON。填充“平面”成员并使用子任务JSONArray调用的结果创建“子”toJSON()

这是基本的树递归。当然,如果您的数据尚未以这种方式构建,那么这无济于事。

public interface JSONThing {
    public JSONObject toJSON();
}