动态解析JSON | Android
我收到了如上所述的响应,我想使用GSON将其解析为Java对象,请告诉我应该如何解析此JSON?这可能会对您有所帮助动态解析JSON | Android,android,arrays,json,gson,Android,Arrays,Json,Gson,我收到了如上所述的响应,我想使用GSON将其解析为Java对象,请告诉我应该如何解析此JSON?这可能会对您有所帮助 { "page" : 0, "pageSize" : 15, "totalPageCount" : 5, "data" : { "020" : "Abarth", "040" : "Alfa Romeo", "042" : "Alpina", "043" : "Alpine", "057" : "Aston Mart
{
"page" : 0,
"pageSize" : 15,
"totalPageCount" : 5,
"data" : {
"020" : "Abarth",
"040" : "Alfa Romeo",
"042" : "Alpina",
"043" : "Alpine",
"057" : "Aston Martin",
"060" : "Audi",
"130" : "BMW",
"095" : "Barkas",
"107" : "Bentley",
"145" : "Brilliance",
"141" : "Buick",
"150" : "Cadillac",
"157" : "Caterham",
"160" : "Chevrolet",
"170" : "Chrysler"
}
}
private void parseJson(JSONObject数据){
如果(数据!=null){
迭代器it=data.keys();
while(it.hasNext()){
String key=it.next();
试一试{
if(data.get(key)instanceof JSONArray){
JSONArray arry=data.getJSONArray(key);
int size=arry.length();
对于(int i=0;i
首先使用以下代码:
private void parseJson(JSONObject data) {
if (data != null) {
Iterator<String> it = data.keys();
while (it.hasNext()) {
String key = it.next();
try {
if (data.get(key) instanceof JSONArray) {
JSONArray arry = data.getJSONArray(key);
int size = arry.length();
for (int i = 0; i < size; i++) {
parseJson(arry.getJSONObject(i));
}
} else if (data.get(key) instanceof JSONObject) {
parseJson(data.getJSONObject(key));
} else {
System.out.println(key + ":" + data.getString(key));
}
} catch (Throwable e) {
try {
System.out.println(key + ":" + data.getString(key));
} catch (Exception ee) {
}
e.printStackTrace();
}
}
}
}
第二个使用链接如下:
解决方案: 请按照以下步骤操作 首先,创建一个模型类:
YourPojo obj = new Gson().fromJson(json, YourPojo.class);
//YourPojo is the class you want json to convert to it.
//json is in String format and should be valid(use online validators like jsonlint.com)
然后,在改装中进行以下更改:
private Converter.Factory createGsonConverter() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(MyResponse.class, new RedirectionInfoDeserializer());
Gson gson = gsonBuilder.create();
return GsonConverterFactory.create(gson);
}
就这样
试试看,让我知道它是否有效。JSON有点动态。我不认为它是重复的你的json不是有效的格式,检查这里刚刚更新了正确的json
我得到了一个类似上面的响应,我想把它解析为json
,这是一个json。你到底想达到什么目的?你是在问如何在android中解析数据吗ઽ૯ท 我现在明白了吗?他要求使用GSON
而不仅仅是使用JSON
dataObject.getString(“020”);是动态值,可以更改吗@Abdulaleem是的,我正在使用改装2
class RedirectionInfoDeserializer implements JsonDeserializer<MyResponse> {
private static final String KEY_PAGE = "page";
private static final String KEY_PAGESIZE = "pageSize";
private static final String KEY_TOTALPAGECOUNT = "totalPageCount";
private static final String KEY_DATA = "data";
@Override
public MyResponse deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
final JsonObject jsonObject = json.getAsJsonObject();
// Read simple String values.
final String page = jsonObject.get(KEY_PAGE).getAsInt();
final String pageSize = jsonObject.get(KEY_PAGESIZE).getAsInt();
final String pageCount = jsonObject.get(KEY_TOTALPAGECOUNT).getAsInt();
// Read the dynamic parameters object.
final Map<String, String> data = readParametersMap(jsonObject);
RedirectionInfo result = new RedirectionInfo();
result.setUri(uri);
result.setHttpMethod(httpMethod);
result.setParameters(parameters);
return result;
}
@Nullable
private Map<String, String> readParametersMap(@NonNull final JsonObject jsonObject) {
final JsonElement paramsElement = jsonObject.get(KEY_DATA);
if (paramsElement == null) {
// value not present at all, just return null
return null;
}
final JsonObject parametersObject = paramsElement.getAsJsonObject();
final Map<String, String> parameters = new HashMap<>();
for (Map.Entry<String, JsonElement> entry : parametersObject.entrySet()) {
String key = entry.getKey();
String value = entry.getValue().getAsString();
data.put(key, value);
}
return data;
}
}
private Converter.Factory createGsonConverter() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(MyResponse.class, new RedirectionInfoDeserializer());
Gson gson = gsonBuilder.create();
return GsonConverterFactory.create(gson);
}
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://myserver.com")
.addConverterFactory(createGsonConverter())
.build();