如果key在另一个对象内部,如何使用Retrofit解析Json

时间:2018-04-25 11:48:35

标签: android retrofit jsonparser

任何人都可以帮助我使用改造来解析json以下吗?

{
  "key1": "value",
  "key2": {
           "key3": "value2",
           "key4": "some random text is here"
          },
  "value2" : {
               -- actual data is here ---
             }
}

这里“value2”会改变。我无法弄清楚如何获取“Key3”的值并使用Retrofit获取实际数据 提前谢谢。

4 个答案:

答案 0 :(得分:2)

你可以将json数据放入pojo类中,放入你的json数据,在下面的网站中生成pojo类..

http://www.jsonschema2pojo.org/

将以下依赖项添加到app level gradle文件中..

    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'

然后在你改造对象后通过这条线..

 retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .client(client.build())
            .addConverterFactory(GsonConverterFactory.create())
            .build();

答案 1 :(得分:0)

Retrofit支持converterFactory,您可以尝试使用Gson或Jackson

在下面找一个例子

在gradle中添加依赖项,

implementation 'com.squareup.retrofit2:converter-gson:2.3.0'

Java代码

 new Retrofit.Builder().baseUrl(BuildConfig.BASE_URL).
            addConverterFactory(GsonConverterFactory.create()).
            client(okHttpClient).
            build();

 public interface GetAllAPI {
        @GET("/all")
        List<Country> getCountries();
    }

答案 2 :(得分:0)

你可以这样做,假设你有上面提到的json的JSONObject。

您可以像String value = jsonObject.optString("key1");

一样解析它

答案 3 :(得分:0)

试试这个:

try {
        JSONObject jsonObject = new JSONObject("Your_json_string");
        String key1 = jsonObject.optString("key1");
        JSONObject key2 = jsonObject.optJSONObject("key2");

        String value2 = key2.optString("key3");//It will get value

        JSONObject jsonObjectValue2 = jsonObject.optJSONObject(value2);// now use value2 here for actual result
        String finalValue = jsonObjectValue2.optString("next_value");
        //....and so on

    } catch (JSONException e) {
        e.printStackTrace();
    }