以下のような親子モデルで、ネストしたオブジェクトが正しく変換されるか、配列や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形式に変換されました。なるほど。 この記事は
現在のアクセス:49852 |