首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于构建多层树的JSON

用于构建多层树的JSON
EN

Stack Overflow用户
提问于 2015-04-27 21:18:40
回答 1查看 136关注 0票数 1

我想像这样形成JSON:

代码语言:javascript
运行
复制
{
    "Schedule": [
        {
            "id": "A",
            "name": "Summary",
            "ischild": "1",
            "level1": [
                {
                    "id": "A.1",
                    "name": "A.1",
                    "ischild": "1",
                    "level2": [
                        {
                            "id": "A.1.a",
                            "name": "Income Statement",
                            "ischild": "0"
                        },
                        {
                            "id": "A.1.b",
                            "name": "Balance Sheet",
                            "ischild": "0"
                        },
                        {
                            "id": "A.1.c",
                            "name": "A.1.c",
                            "ischild": "1",
                            "level3": [
                                {
                                    "id": "A.1.c.1",
                                    "name": "General RWA",
                                    "ischild": "0"
                                },
                                {
                                    "id": "A.1.c.2",
                                    "name": "Standardized RWA",
                                    "ischild": "0"
                                },
                                {
                                    "id": "A.1.c.3",
                                    "name": "Advanced RWA",
                                    "ischild": "0"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

但我的代码给出了以下输出:

代码语言:javascript
运行
复制
{
    "Schedule": [
        {
            "name": "Summary",
            "ischild": "1",
            "id": "A",
            "N_LEVEL": "1"
        },
        {
            "name": "A.1",
            "ischild": "1",
            "id": "A.1",
            "N_LEVEL": "2"
        },
        {
            "name": "Income  Statement",
            "ischild": "0",
            "id": "A.1.a",
            "N_LEVEL": "3"
        },
        {
            "name": "Balance Sheet",
            "ischild": "0",
            "id": "A.1.b",
            "N_LEVEL": "3"
        },
        {
            "name": "A.1.c",
            "ischild": "1",
            "id": "A.1.c",
            "N_LEVEL": "3"
        },
        {
            "name": "General RWA",
            "ischild": "0",
            "id": "A.1.c.1",
            "N_LEVEL": "4"
        },
        {
            "name": "Standardized RWA",
            "ischild": "0",
            "id": "A.1.c.2",
            "N_LEVEL": "4"
        },
        {
            "name": "Advanced RWA",
            "ischild": "0",
            "id": "A.1.c.3",
            "N_LEVEL": "4"
        }
    ]
}

下面是我的代码:

代码语言:javascript
运行
复制
public static String getJSONFromResultSet(ResultSet rs,String keyName) 
{
    System.out.println(" in getJSONFromResultSet method");
    Map json = new HashMap(); 
    List list = new ArrayList();
    if(rs!=null)
    {
        try
        {
            ResultSetMetaData metaData = rs.getMetaData();
            while(rs.next())
            {
                Map<String,Object> columnMap = new HashMap<String, Object>();
                for(int columnIndex=1;columnIndex<=metaData.getColumnCount();columnIndex++)
                {
                    if(rs.getString(metaData.getColumnName(columnIndex))!=null)
                            columnMap.put(metaData.getColumnLabel(columnIndex),rs.getString(metaData.getColumnName(columnIndex)));
                    else
                            columnMap.put(metaData.getColumnLabel(columnIndex), "");
                }
                list.add(columnMap);
            }
        } 
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        json.put(keyName, list);
    }
    return JSONValue.toJSONString(json);
EN

回答 1

Stack Overflow用户

发布于 2015-04-27 21:59:22

我认为你的目标结构可以更好,如果它的名称不会在每个级别上改变。级别编号是,而不是密钥ischild也没有任何意义,我认为这是isNotALeaf,这是可以解决的,所以把它也去掉,所以我们有:

代码语言:javascript
运行
复制
{
        "id": "A",
        "name": "Summary",
        "level": "1",
        "children": [
            {
                "id": "A.1",
                "name": "A.1",
                "level": "2",
                "children": [
                    {
                        "id": "A.1.a",
                        "name": "Income Statement",
                        "level": "3"
                    },
                    {
                        "id": "A.1.b",
                        "name": "Balance Sheet",
                        "level": "3"
                    }
                 ]
             }
}

然后根据在GSon中使用的类生成一个自引用类:

代码语言:javascript
运行
复制
package com.example;

import java.util.ArrayList;
import java.util.List;
import javax.annotation.Generated;
import com.google.gson.annotations.Expose;

@Generated("org.jsonschema2pojo")
public class Child {

    @Expose
    private String id;
    @Expose
    private String name;
    @Expose
    private String level;
    @Expose
    private List<Child> children = new ArrayList<Child>();

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getLevel() {
        return level;
    }

    public void setLevel(String level) {
        this.level = level;
    }

    public List<Child_> getChildren() {
        return children;
    }

    public void setChildren(List<Child> children) {
        this.children = children;
    }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29896975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档