|
以下のような親子モデルで、ネストしたオブジェクトが正しく変換されるか、配列やListやSetなどが正しく変換されるか試してみます。 public class Parent {
private String name;
private int id;
private Child child;
public Child getChild() { return child; }
public void setChild(Child child) { this.child = child;}
public int getId() { return id;}
public void setId(int id) { this.id = id;}
public String getName() { return name;}
public void setName(String name) { this.name = name;}
public String toString() {
return new ToStringBuilder(this).
append("id", getId()).append("name",
getName()).append("child", getChild()).toString();
}
}
public class Child {
private String name;
public String getName() { return name;}
public void setName(String name) { this.name = name;}
public String toString() {
return new ToStringBuilder(this)
.append("name", getName()).toString();
}
}
ネストしたオブジェクト †Parent parent = new Parent();
parent.setId(0);
parent.setName("親の名前");
Child child = new Child();
child.setName("子の名前");
parent.setChild(child);
JSONObject jsonObject = JSONObject.fromObject(parent);
System.out.println(jsonObject);
結果 {"child":{"name":"子の名前"},"name":"親の名前","id":0}
{"フィールド名":value}というJSON形式に変換されました。Childクラスであるchildフィールドも、ちゃんとネストして変換されていますね。 java.util.List †java.util.Listを追加しました。 public class Parent {
private String name;
private int id;
private List list; //追加
public List getList() {return list;} //追加
public void setList(List list) {this.list = list;} //追加
//private Child child;
//public Child getChild() { return child; }
//public void setChild(Child child) { this.child = child;}
public int getId() { return id;}
public void setId(int id) { this.id = id;}
public String getName() { return name;}
public void setName(String name) { this.name = name;}
public String toString() {
return new ToStringBuilder(this).append("id", getId())
.append("name",getName())
.append("list", list).toString();
}
}
これでやってみると、、 Parent parent = new Parent();
parent.setId(0);
parent.setName("親の名前");
Child child = new Child();
child.setName("子の名前");
List<Child> list = new ArrayList<Child>();
list.add(child);
list.add(child);
parent.setList(list);
JSONObject jsonObject = JSONObject.fromObject(parent);
System.out.println(jsonObject);
結果 {"list":[{"name":"子の名前"},{"name":"子の名前"}],"name":"親の名前","id":0}
listフィールドは "list":[{"name":"子の名前"},{"name":"子の名前"}]
というように配列表現に変換されていますね。まあ想定通りですね。 配列 †java.util.Listを配列にしました。 public class Parent {
private String name;
private int id;
private Child[] children;
public Child[] getChildren() { return children;}
public void setChildren(Child[] children) { this.children = children;}
public int getId() { return id;}
public void setId(int id) { this.id = id;}
public String getName() { return name;}
public void setName(String name) { this.name = name;}
public String toString() {
return new ToStringBuilder(this).append("id", getId())
.append("name",getName())
.append("children", children).toString();
}
}
これでやってみると Parent parent = new Parent();
parent.setId(0);
parent.setName("親の名前");
Child child = new Child();
child.setName("子の名前");
parent.setChildren(new Child[] { child, child });
JSONObject jsonObject = JSONObject.fromObject(parent);
System.out.println(jsonObject);
結果 {"name":"親の名前","id":0,"children":[{"name":"子の名前"},{"name":"子の名前"}]}
配列childrenは "children":[{"name":"子の名前"},{"name":"子の名前"}]
となり、JSONの配列になっていますね。 java.util.Set †java.util.Listをjava.util.Setに変えてみました。 public class Parent {
private String name;
private int id;
private Set children;
public Set getChildren() {return children;}
public void setChildren(Set children) {this.children = children;}
public int getId() { return id;}
public void setId(int id) { this.id = id;}
public String getName() { return name;}
public void setName(String name) { this.name = name;}
public String toString() {
return new ToStringBuilder(this).append("id", getId())
.append("name",getName())
.append("children", children).toString();
}
}
これでやってみると、、 Parent parent = new Parent();
parent.setId(0);
parent.setName("親の名前");
Child child = new Child();
child.setName("子の名前");
Set<Child> children = new HashSet<Child>();
children.add(child);
parent.setChildren(children);
JSONObject jsonObject = JSONObject.fromObject(parent);
System.out.println(jsonObject);
結果 {"name":"親の名前","id":0,"children":[{"name":"子の名前"}]}
Setは配列になりました。なるほど。 java.util.Map †java.util.Setをjava.util.Mapに変えてみました。 public class Parent {
private String name;
private int id;
private Map children;
public Map getChildren() {return children;}
public void setChildren(Map children) {this.children = children;}
public int getId() { return id;}
public void setId(int id) { this.id = id;}
public String getName() { return name;}
public void setName(String name) { this.name = name;}
public String toString() {
return new ToStringBuilder(this).append("id", getId())
.append("name",getName())
.append("children", children).toString();
}
}
これでやってみると、、 Parent parent = new Parent();
parent.setId(0);
parent.setName("親の名前");
Child child = new Child();
child.setName("子の名前");
Map children = new HashMap();
children.put("child1", child);
children.put("child2", child);
parent.setChildren(children);
JSONObject jsonObject = JSONObject.fromObject(parent);
System.out.println(jsonObject);
結果 {"name":"親の名前","id":0,
"children":{"child1":{"name":"子の名前"},
"child2":{"name":"子の名前"}
}
} (整形してます)
Childを格納してたMapは "children":{"child1":{"name":"子の名前"},
"child2":{"name":"子の名前"}
とネストされたJSON形式に変換されました。なるほど。 この記事は
現在のアクセス:50375 |