簡體   English   中英

如何使用java程序制作Hirarchical Json結構

[英]How to make a Hirarchical Json Structure with java program

我正在研究一代JSON。 期望的結果是:

{
    "nodes": [
        {
            "name": "Jeet123",
            "type": 1,
            "slug": "",
            "entity": "company"
        }
    ],
    "links": [
        {
            "source": 0,
            "target": 1,
            "value": 1,
            "distance": 5
        }
    ]
}

這個JSON我必須做。 我正在寫這個java代碼..但它只顯示{}

Entry1

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

class Entry1 {

private String name;
private int type;
private String slug;
private String entity;

public String getName() {
    return name;
}

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

public int getType() {
    return type;
}

public void setType(int type) {
    this.type = type;
}

public String getSlug() {
    return slug;
}

public void setSlug(String slug) {
    this.slug = slug;
}

public String getEntity() {
    return entity;
}

public void setEntity(String entity) {
    this.entity = entity;
}
}

Entry2

class Entry2 {

private String source;
private String target;
private String value;
private String distance;

public String getSource() {
    return source;
}

public void setSource(String source) {
    this.source = source;
}

public String getTarget() {
    return target;
}

public void setTarget(String target) {
    this.target = target;
}

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}

public String getDistance() {
    return distance;
}

public void setDistance(String distance) {
    this.distance = distance;
}
}

EntryListContainer

class EntryListContainer {

public List<Entry1> nodes;
public List<Entry2> links;

public void setEntryList1(List<Entry1> entryList1) {
    this.nodes = nodes;
}

public List<Entry1> getEntryList1() {

    return nodes;
}

public void setEntryList2(List<Entry2> entryList1) {
    this.links = links;
}

public List<Entry2> getEntryList2() {

    return links;
}

}

LinkJson

public class LinkJson {

public static void main(String[] args) {

    EntryListContainer container = new EntryListContainer();

    List<Entry1> entryList1 = new ArrayList<>();
    List<Entry2> entryList2 = new ArrayList<>();

    Entry1 entry1 = new Entry1();

    entry1.setName("Jeet123");
    entry1.setType(1);
    entry1.setSlug("");
    entry1.setEntity("company");

    entryList1.add(entry1);

    Entry2 entry2 = new Entry2();

    entry2.setSource("0");
    entry2.setTarget("1");
    entry2.setValue("1");
    entry2.setDistance("5");

    entryList2.add(entry2);

    container.setEntryList1(entryList1);
    container.setEntryList2(entryList2);

    Gson gson = new Gson();

    System.out.println(gson.toJson(container));

  }

}

EntryListContainer類創建構造函數:

class EntryListContainer {

    private List<Entry1> nodes;
    private List<Entry2> links;

    public EntryListContainer(List<Entry1> nodes, List<Entry2> links) {
        this.nodes = nodes;
        this.links = links;
    }
}

然后以這種方式創建container對象:

EntryListContainer container = new EntryListContainer(entryList1,entryList2);

然后創建json:

  Gson gson = new Gson();

  System.out.println(gson.toJson(container));

編輯 :沒有必要使用構造函數,

EntryListContainer類中更改以下方法,它將起作用:

public void setEntryList1(List<Entry1> entryList1) {
        this.nodes = entryList1;
    }

public void setEntryList2(List<Entry2> entryList2) {
        this.links = entryList2;
    }

不好復制/粘貼!

public void setEntryList2(List<Entry2> entryList1) {
        this.links = links;
    }

    public void setEntryList1(List<Entry1> entryList1) {
        this.nodes = nodes;
    }

你應該這樣:

public void setEntryList2(List<Entry2> links) {
    this.links = links;
}

public void setEntryList1(List<Entry1> nodes) {
    this.nodes = nodes;
}

通常解析JSON以獲取屬性的方法是查找屬性名稱(代碼中的nodeslinks ),然后將第一個字母大寫並將get字詞附加到前面以嘗試使用getter方法。 基本上,您的EntryListContainer不遵循JSON(和代理的GSON)所依賴的Java Bean約定 因此,它沒有打印任何東西,因為你有沒有為getter方法getNodesgetLinks ,你有getEntryList1getEntryList2

我很確定你的EntryListContainer類需要看起來像這樣:

class EntryListContainer {

    public List<Node> nodes;
    public List<Link> links;

    public void setNodes(final List<Node> nodes) {
        this.nodes = nodes;
    }

    public List<Node> getNodes() {
        return this.nodes;
    }

    public void setLinks(final List<Link> links) {
        this.links = links;
    }

    public List<Link> getLinks() {
        return this.links;
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM