我试图解析具有动态键值的远程json对象。这是我的
JSON格式
。
[
{
"Item": [
{
"Account": "Flowers",
"Today": 1,
"Tomorrow": 1
}
]
}
]
我不能在这里使用POJO类,因为远程json键总是动态的。因此,我尝试了以下改装2的方法。
call.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {
Log.e("Here response is", response.body().toString() + " "); // got "Here response is: [{"Item":[{"Account":"FLOWSERVE-FCD","Today":1,"Tomorrow":1}]}] "
JsonArray responseArray= response.body().getAsJsonArray();
try {
JsonObject jObj1 = (JsonObject) responseArray.get(0);
JsonArray jArray = jObj1.getAsJsonArray("Item");
JsonObject jObj2 = (JsonObject) jArray.get(0);
// It is ok if we know the keys
String value1 = jObj2.get("Account").toString(); // get FLOWSERVE-FCD
String value2 = jObj2.get("Today").toString(); // get 1
String value3 = jObj2.get("Tomorrow").toString(); // get 1
// Here , I try for dynamic, but it got error
ArrayList<String> dynamicKeys = new ArrayList<String>(); // create ArrayList to store dynamic keys later
for (int i = 0; i < jObj2.size(); i++) {
String str_image_url = jObj2.get(i); // although use "jObj2.keys(); it can't be used here.
Log.e("Succcccc ", str_image_url);
dynamicKeys.add(str_image_url);
}
} catch (Exception e) {
e.printStackTrace();
Log.e("Grrr Again", e.toString());
}
}
@Override
public void onFailure(Call<JsonElement> call, Throwable t) {
Toast.makeText(context, t.getMessage(), Toast.LENGTH_LONG).show();
Log.e("Grrr Error", t.getMessage());
}
});
如果我们知道
json键
,但对我来说,它被动态键困住了。因此,任何想法或替代方法都值得赞赏。