Android 解析键值对json的简单方法
我想解析json。我知道改造和工作,但不知道如何解析下面的json,因为它的格式不正确 请帮我解决这个问题。json中的大学数量不是一成不变的,它们将发生变化Android 解析键值对json的简单方法,android,json,api,retrofit,pojo,Android,Json,Api,Retrofit,Pojo,我想解析json。我知道改造和工作,但不知道如何解析下面的json,因为它的格式不正确 请帮我解决这个问题。json中的大学数量不是一成不变的,它们将发生变化 { "transactionid": "7ec7d209589ce2abdb2e555c26776c85", "returncode": "200", "returnmsg": "success", "university": { "1": "Anna University",
{
"transactionid": "7ec7d209589ce2abdb2e555c26776c85",
"returncode": "200",
"returnmsg": "success",
"university": {
"1": "Anna University",
"3": "Technological University",
}
}
您可以使用JsonDeserializer,在您的gradle文件中导入
com.squareup.Refught2:转换器gson:2.1.0
并使用下面的类
public static class MyDeserializer implements JsonDeserializer<YourResponseModel> {
@Override
public YourResponseModel deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
YourResponseModel response = new YourResponseModel();
JsonObject jsonObject = json.getAsJsonObject();
JsonObject university = jsonObject.getAsJsonObject("university");
ArrayList<String> universities = new ArrayList<>();
try {
JSONObject object = new JSONObject(university.toString());
Iterator<String> iter = object.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
String value = object.getString(key);
universities.add(value);
} catch (JSONException e) {
Log.e(TAG, "deserialize: ",e );
}
}
} catch (JSONException e) {
e.printStackTrace();
}
response.university = universities;
return response;
}
}
最后将其设置为改装生成器
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
您可以从这里获得更多信息到目前为止您做了什么?我想解析这个json。我不知道如何为这个json创建pojo,因为它有一个键值结构。请将json粘贴到这里,然后获取pojo zip文件。你是编写api的人吗?您需要将“university”字段更改为数组,否则将数据更改为数组将更容易解析
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();