用于构造多级树的JSON

时间:2015-04-27 13:18:40

标签: java json

我想像这样形成JSON:

void myFunction(int number)
{
    // The function already writen reads from stdin using the argument.
}

void fillStdin(void)
{
    FILE* myFile;
    myFile = fopen("myfile.txt", "r");

    // Put the content of the file in stdin

    fclose(myFile);
}


int main(void)
{
    int myArray[5] = {1, 2, 3, 4, 5};
    for (int i = 0; i < 5; i++)
    {
        fillStdin();
        myFunction(myArray[i]);
    }

    return 0;
}

但是我的代码提供了以下输出:

{
    "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"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

这是我的代码:

{
    "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"
        }
    ]
}

1 个答案:

答案 0 :(得分:0)

我认为如果名称在每个级别都没有变化,那么你的目标结构会更好。级别编号是,而不是ischild也没有任何意义,我认为这是isNotALeaf,这可以解决,所以我们也要这样做,所以我们有:

{
        "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中使用的类生成一个自引用类:

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

}