任何人都可以帮助我使用改造来解析json以下吗?
{
"key1": "value",
"key2": {
"key3": "value2",
"key4": "some random text is here"
},
"value2" : {
-- actual data is here ---
}
}
这里“value2”会改变。我无法弄清楚如何获取“Key3”的值并使用Retrofit获取实际数据 提前谢谢。
答案 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();
}