【问题标题】:How can I write a Java Bean to parse this JSON string with Gson in Android? [closed]如何编写 Java Bean 以在 Android 中使用 Gson 解析此 JSON 字符串? [关闭]
【发布时间】:2013-09-22 12:10:57
【问题描述】:

我有以下来自网络服务的 JSON 结构:

{
  "owner": {
    "username": "bobby",
    "password": "$2a$10$KTouvpAZwyUiCOsvMej.i.zNcGVt94d.n64MHWyxX35ZR03tWCIui",
    "email": "bobby@email.com",
    "name": "Bobby P",
    "_id": "51a59d917997582c3a000003",
    "__v": 0,

    "phones": [
      "11118012888",
      "12341234",
      "987655775"

    ],
    "altemails": [
      "a@a.com",
      "b@b.com",
      "c@c.com"
    ]

  },

  "facilities": [
    {
      "url": "/v1/facilities/51a5a6237997582c3a000006"
    },
    {
      "url": "/v1/facilities/51a5a6237997582c3a000007"
    },
    {
      "url": "/v1/facilities/51a5b533ebcefa893d000003"
    },
    {
      "url": "/v1/facilities/51b0238edadae8024f000003"
    }
  ]
}

对于这个 JSON 响应。我只需要设施阵列。

谁能告诉我如何编写一个 Bean 类,以便我可以在 Android 中使用 Gson 读取它?

【问题讨论】:

    标签: java android json gson


    【解决方案1】:

    你需要这个:

    package stackoverflow.questions.q18943680;
    
    import java.util.ArrayList;
    
    public class Owner {
    
        String username;
        String password;
        String email;
        String name;
        String _id;
        int  __v;
    
        ArrayList<String> phones;
    
        @Override
        public String toString() {
            return "Owner [username=" + username + ", password=" + password
                    + ", email=" + email + ", name=" + name + ", _id=" + _id
                    + ", __v=" + __v + ", phones=" + phones + "]";
        }
    
    }
    

    这个:

    package stackoverflow.questions.q18943680;
    
    public class Facility {
        String url;
    
        @Override
        public String toString() {
            return "Facility [url=" + url + "]";
        }
    }
    

    还有这个:

    package stackoverflow.questions.q18943680;
    
    import java.util.ArrayList;
    
    public class TestBean {
    
        public Owner owner;
        public ArrayList<Facility> facilities;
    
        @Override
        public String toString() {
            return "TestBean [owner=" + owner + ", facilities=" + facilities + "]";
        }
    
    
    }
    

    你会得到你的结果:

    package stackoverflow.questions.q18943680;
    
    import com.google.gson.Gson;
    
    public class Q18943680 {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            String json = "{"+
              "  \"owner\": {                                                                     "+
              "  \"username\": \"bobby\",                                                         "+
              "  \"password\": \"$2a$10$KTouvpAZwyUiCOsvMej.i.zNcGVt94d.n64MHWyxX35ZR03tWCIui\",  "+
              "  \"email\": \"bobby@email.com\",                                                  "+
              "  \"name\": \"Bobby P\",                                                           "+
              "  \"_id\": \"51a59d917997582c3a000003\",                                           "+
              "  \"__v\": 0,                                                                      "+
              "                                                                                   "+
              "  \"phones\": [                                                                    "+
              "    \"11118012888\",                                                               "+
              "    \"12341234\",                                                                  "+
              "    \"987655775\"                                                                  "+
              "                                                                                   "+
              "  ],                                                                               "+
              "  \"altemails\": [                                                                 "+
              "    \"a@a.com\",                                                                   "+
              "    \"b@b.com\",                                                                   "+
              "    \"c@c.com\"                                                                    "+
              "  ]                                                                                "+
              "                                                                                   "+
              "},                                                                                 "+
              "                                                                                   "+
              "\"facilities\": [                                                                  "+
              "  {                                                                                "+
              "    \"url\": \"/v1/facilities/51a5a6237997582c3a000006\"                           "+
              "  },                                                                               "+
              "  {                                                                                "+
              "    \"url\": \"/v1/facilities/51a5a6237997582c3a000007\"                           "+
              "  },                                                                               "+
              "  {                                                                                "+
              "    \"url\": \"/v1/facilities/51a5b533ebcefa893d000003\"                           "+
              "  },                                                                               "+
              "  {                                                                                "+
              "    \"url\": \"/v1/facilities/51b0238edadae8024f000003\"                           "+
              "  }                                                                                "+
              "]}                                                                                  ";
    
    
            Gson g = new Gson();
            TestBean tb = g.fromJson(json, TestBean.class);
    
            System.out.println("This is the result: "+tb.facilities);
    
        }
    
    }
    

    这给了你:

    This is the result: [Facility [url=/v1/facilities/51a5a6237997582c3a000006], Facility [url=/v1/facilities/51a5a6237997582c3a000007], Facility [url=/v1/facilities/51a5b533ebcefa893d000003], Facility [url=/v1/facilities/51b0238edadae8024f000003]]
    

    我建议您使用http://json.parser.online.fr/ 快速解析您的 JSON,以获得关于如何将事物安排到您的 JSON 中以构建其他 bean 的可视化描述。

    【讨论】:

    • 非常感谢 Trapo 的帮助。它对我有用 :)
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2014-05-10
    • 1970-01-01
    相关资源
    最近更新 更多