[ANDROID] 개조를 사용하여 구문 분석 동적 키 JSON 문자열
ANDROID개조를 사용하여 구문 분석 동적 키 JSON 문자열
해결법
-
1.귀하의 resultInside 클래스는 JSON에 존재하지 않는 별도의 오브젝트 레이어를 추가하고있다. 데이터 클래스 결과 필드로지도를 이동하십시오.
귀하의 resultInside 클래스는 JSON에 존재하지 않는 별도의 오브젝트 레이어를 추가하고있다. 데이터 클래스 결과 필드로지도를 이동하십시오.
public class Data { @SerializedName("results") @Expose private Map<String, Vitals> result; //.... }
-
2.이 작업을 수행하는 더 좋은 방법이 될 것이다 :
이 작업을 수행하는 더 좋은 방법이 될 것이다 :
---------------------- public class Report { @SerializedName("data") @Expose private Data data; ---------------------- public class Data { public HashMap<String, DataValues> dataValues; public Data() { this.dataVaues = new HashMap<>(); } } -----------------------------
다음과 같은 파서 클래스를 생성 :
public class DataParser implements JsonDeserializer<Data> { @Override public Data deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { Data result = new Data(); try { final HashMap<String, DataValues> map = readServiceUrlMap(json.getAsJsonObject()); if(map != null) { result.dataValues = map; } }catch (JsonSyntaxException ex){ return null; } return result; } private HashMap<String, DataValues> readServiceUrlMap(final JsonObject jsonObject) throws JsonSyntaxException { if(jsonObject == null) { return null; } Gson gson = new Gson(); HashMap<String, DataValues> products = new HashMap<>(); for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) { String key = entry.getKey(); DataValues value = gson.fromJson(entry.getValue(), DataValues.class); products.put(key, value); } return products; } ----------------------------------------------
그 후, 당신의 ApiClient 클래스에서이 입력
public class ApiClient { private static Retrofit retrofit = null; public static Retrofit getClient(String baseUrl) { if(retrofit == null) { GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter(Data.class, new DataParser()); retrofit = new Retrofit.Builder() .baseUrl(baseUrl) .addConverterFactory(GsonConverterFactory.create(gsonBuilder.create())) .build();
나는이 사람을 도움이되기를 바랍니다
from https://stackoverflow.com/questions/33758601/parse-dynamic-key-json-string-using-retrofit by cc-by-sa and MIT license
'ANDROID' 카테고리의 다른 글
[ANDROID] 어떻게 안드로이드에서 특정 범위에서 임의의 숫자를 생성 할 수 있습니까? [복제] (0) | 2020.11.05 |
---|---|
[ANDROID] 어떻게 안드로이드 응용 프로그램의 모든 버튼에 스타일을 적용 할 (0) | 2020.11.05 |
[ANDROID] 터치에 비트 맵의 특정 영역을 투명하게 (0) | 2020.11.05 |
[ANDROID] 터치 이벤트와 캔버스의 이미지 (0) | 2020.11.05 |
[ANDROID] 어떻게 안드로이드의 원형 이미지 뷰를 만드는 방법? [복제] (0) | 2020.11.05 |