#author("2020-06-13T06:07:33+00:00","","") #author("2022-01-21T05:07:43+00:00","","") // 下階層用テンプレート #topicpath ---- //ここにコンテンツを記述します。 #contents 以下のような親子モデルで、ネストしたオブジェクトが正しく変換されるか、配列や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(); } } ***ネストしたオブジェクト [#j4880f41] 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 [#we6c4678] 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":"子の名前"}] というように配列表現に変換されていますね。まあ想定通りですね。 ***配列 [#m3694282] 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 [#a5717541] 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 [#ge97d174] 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形式に変換されました。なるほど。 ---- この記事は #vote(おもしろかった[52],そうでもない[8]) #vote(おもしろかった[53],そうでもない[8]) - byte[]とかは?BLOBとかは?バイナリ系も確認しなくちゃね。 -- [[きの]] &new{2007-01-09 (火) 09:50:20}; - asdfasdf -- [[asdfasdf]] &new{2016-10-27 (木) 10:18:11}; - asdfasdf -- [[asdfasdf]] &new{2016-10-27 (木) 10:18:14}; #comment #topicpath SIZE(10){現在のアクセス:&counter;}