2014年8月22日金曜日

JSONとJavaオブジェクトのマッピング

前はXMLとJavaオブジェクトのマッピングをやってたけど、今回はJSONとJavaのマッピングです。
JSONのマッピングなんて初歩の初歩だけどやるのは初めてだった。

JSON⇔JavaではGsonを使ってみた。

【Gson】GSONは、Googleが提供するJSONデータとJavaオブジェクトを相互に変換するためのライブラリ。

使いたい場合はPOMに書いて


    com.google.code.gson
    gson
    2.3



JSONデータのサンプルはこれで めちゃ簡単にした

{
    "user_id": 1,
    "name": "hokboy",
    "mail": {
        "pc": "XXX@gmail.com",
        "mobile": "XXX@softbank.ne.jp"
    }
}


マッピングするJavaのオブジェクトは

public class User {
 private int id;
 private String name;
 private Mail mail;
 
 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 Mail getMail() {
  return mail;
 }
 
 public void setMail(Mail mail) {
  this.mail = mail;
 }
}

public class Mail {
 private String pc;
 private String phone;
 
 public String getPc() {
  return pc;
 }
 
 public void setPc(String pc) {
  this.pc = pc;
 }
 
 public String getPhone() {
  return phone;
 }
 
 public void setPhone(String phone) {
  this.phone = phone;
 }
}


で、シリアライズ(Jsonに変換)する場合は

String jsonData = "{\"user_id\":1,\"name\":\"hokboy\",\"mail\":{\"pc\":\"XXX@gmail.com\",\"mobile\":\"XXX@softbank.ne.jp\"}}"
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class)


デシリアライズ(Javaオブジェクトに変換)する場合は

Mail mail = new Mail();
mail.setPc("XXX@gmail.com");
mail.setMobile("XXX@softbank.ne.jp");

User user = new User();
user.setId(1);
user.setName("hokboy");
user.setMail(mail);

Gson gson = new Gson();
String jsonData = gson.toJson(user)


てな感じ


今悩んでるのは

{
    "1": [
        {
            "1": [
             {
              "1": [
                  {
                     "hoge": "fuga"
                  }
              ]
          }
            ]
        }
    ]
}


このJSON形式だと、オブジェクト化すんのむずくね… キーがなくてバリューしかないっていう…

0 件のコメント:

コメントを投稿