【问题标题】:Deserialize dynamic JSON key using Gson + Volley使用 Gson + Volley 反序列化动态 JSON 密钥
【发布时间】:2014-05-02 09:15:48
【问题描述】:

我有一个带有动态键值的 JSON。例如:

"location_id": {
  "0": 0,
  "1": 1,
  "2404": "Section 9 Shah Alam - 3.085376,101.522716",
  "272": "Bukit Jelutong - 3.103953,101.527704",
  "545": "Giant Shah Alam - 3.084166,101.549152",
  ...
}

通常,我会对固定键值做的是在 POJO 类中定义它,如下所示:

json:

"location_id": {
  "id" : "hehe",
  "name": "herpderp",
  "location": "Section 9 Shah Alam - 3.085376,101.522716",
  ...
}

POJO 将如下所示:

private String id;
private String name;
private String location;
...

并且通过使用GsonRequest,它会将JSON解析为POJO。

但是,如何反序列化具有动态键值的 JSON?

【问题讨论】:

    标签: android json gson android-volley


    【解决方案1】:

    如果您有动态键值,则需要手动解析 JSON。 例如,做一个简单的请求,然后在响应回调中解析数据。

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(final JSONObject response) {
                //get a fake property from response
                String title = response.optString("title");
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(final VolleyError error) {
                //handle errors
            }
        }
        ) {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                //get request headers
            }
        };
    

    【讨论】:

      【解决方案2】:

      我明白了。感谢@Mattia 的回复。

      我只需要输入Map&lt;String, String&gt; 就可以得到整个键值对作为字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-05
        • 1970-01-01
        • 2017-01-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多