0

我有一些 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,"Scored",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 响应的任何方法或技术吗?具体来说,我想知道是否有什么可以用来处理扩展节点、子节点和叶节点的创建?

4

3 回答 3

2

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

于 2011-12-21T19:57:16.100 回答
0

您可能喜欢这里描述的方法:http: //betasoftware.posterous.com/how-to-write-compact-json-objects-in-java

于 2011-12-21T20:00:52.943 回答
0

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

这是基本的树递归。当然,如果您的数据还没有以这种方式结构化,那么这并没有多大帮助。

public interface JSONThing {
    public JSONObject toJSON();
}
于 2011-12-21T20:07:26.160 回答