Reputation: 923
I am working on a generation JSON. The desired result is:
{
"nodes": [
{
"name": "Jeet123",
"type": 1,
"slug": "",
"entity": "company"
}
],
"links": [
{
"source": 0,
"target": 1,
"value": 1,
"distance": 5
}
]
}
This JSON i have to make. I am Writing this java code.. But it only shows {}
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));
}
}
Upvotes: 1
Views: 130
Reputation: 5149
Create Constructor for your EntryListContainer
class:
class EntryListContainer {
private List<Entry1> nodes;
private List<Entry2> links;
public EntryListContainer(List<Entry1> nodes, List<Entry2> links) {
this.nodes = nodes;
this.links = links;
}
}
And then create the container
object this way:
EntryListContainer container = new EntryListContainer(entryList1,entryList2);
And then create the json:
Gson gson = new Gson();
System.out.println(gson.toJson(container));
Edit: Not necessary to use the constructor,
Change the following methods in your EntryListContainer
class and it will work:
public void setEntryList1(List<Entry1> entryList1) {
this.nodes = entryList1;
}
public void setEntryList2(List<Entry2> entryList2) {
this.links = entryList2;
}
Upvotes: 1
Reputation: 2764
The way JSON is usually parsed to get the properties is to find the property names (nodes
and links
in your code) and then capitalise the first letter and append the get
word onto the front to try and use the getter method. Basically your EntryListContainer
doesn't follow the Java Bean Conventions that JSON (and GSON by proxy) relies on.
So it didn't print anything because you had no getter method for getNodes
or getLinks
, you have getEntryList1
and getEntryList2
I'm pretty sure you EntryListContainer class needs to look like this:
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;
}
}
Upvotes: 1
Reputation: 560
Bad copy/paste !
public void setEntryList2(List<Entry2> entryList1) {
this.links = links;
}
public void setEntryList1(List<Entry1> entryList1) {
this.nodes = nodes;
}
You should have this :
public void setEntryList2(List<Entry2> links) {
this.links = links;
}
public void setEntryList1(List<Entry1> nodes) {
this.nodes = nodes;
}
Upvotes: 1