#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(おもしろかった[50],そうでもない[7])
#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;}


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS