Android 如何动态解析密钥动态变化的json响应

Android 如何动态解析密钥动态变化的json响应,android,json,Android,Json,我的json响应如下 "answers": [{ "data": [ { "currency": "EUR/JPY", "rate": "122.593", "timestamp": "1497524449141" }, { "currency": "EUR/CHF", "rate": "1.08779", "timestamp": "1497524449234" }, { "currency": "USD/CAD",

我的json响应如下

"answers": [{
"data": [
  {
    "currency": "EUR/JPY",
    "rate": "122.593",
    "timestamp": "1497524449141"
  },
  {
    "currency": "EUR/CHF",
    "rate": "1.08779",
    "timestamp": "1497524449234"
  },
  {
    "currency": "USD/CAD",
    "rate": "1.32772",
    "timestamp": "1497524449235"
  },
  {
    "currency": "AUD/USD",
    "rate": "0.75875",
    "timestamp": "1497524449148"
  },
  {
    "currency": "GBP/JPY",
    "rate": "140.248",
    "timestamp": "1497524449230"
  }
],
"metadata": {"count": 60},
"actions": [{
  "type": "table",
  "columns": {
    "currency": "Valuta",
    "rate": "Quota"
  },
  "count": -1
}]
}],
这里actionJson数组有Json对象列。关键货币和汇率名称是动态的,即它可能有其他名称,如游戏和目标或任何其他名称,而且关键数字也可能发生变化。相应地,输入数据json数组也会改变。数据json数组使用相同的键名。

您可以使用和

更新: 下面是一个小代码示例(我稍微简化了JSON):

private void parse(){
“货币”汇率:122.593\”,“时间戳”,”,”时间戳,”,”时间戳,”,”时间戳,”,”时间戳”,”时间戳”::“1499752444444444444414141,”,”,”,”,”,”货币”数据,”,”,”,”,”货币”货币”货币”::,,,,:“欧元/瑞士货币”货币”:,,,,,“汇率”货币:欧元/欧元/瑞士,”货币:货币:14.454545455454545454544444444444444444444444444444444141414141414141414141414141414141414141413434,”,”,”,”,”,”,”,,,,,,,,,,,,,,,,,,,,,,,,,,货币货币”货币”货币:货币:货币:货币:货币:货币:货币:货币:美元/美元/美元/美元/美元/美元/CAD/CAD,”如如如如如如如如如如如如如75875\,“时间戳”:“149752449148\,{”货币\“:”英镑/日元\“,”汇率\“:”140.248 \“,”时间戳\“:”149752449230 \“,”元数据\“:{”计数\“:60},\”动作\“:[{”类型\“:”表格\“,”列\“:{”货币\“:”数值\“,”汇率\“:”配额\“,”计数\“:-1}”;
Type Type=new-TypeToken(){}.getType();
List List=new Gson().fromJson(json,类型);
用于(数据对象:列表){
for(HashMap:object.data){
Log.e(“mapItemStart”,“=========================”);
for(字符串项:map.keySet()){
Log.e(“mapItem”,item+“->”+map.get(item));
}
Log.e(“mapItemEnd”,“mapItemEnd=”);
}
}
}
公共静态类数据对象{
公开名单数据;
}
您可以使用和

更新: 下面是一个小代码示例(我稍微简化了JSON):

private void parse(){
“货币”汇率:122.593\”,“时间戳”,”,”时间戳,”,”时间戳,”,”时间戳,”,”时间戳”,”时间戳”::“1499752444444444444414141,”,”,”,”,”,”货币”数据,”,”,”,”,”货币”货币”货币”::,,,,:“欧元/瑞士货币”货币”:,,,,,“汇率”货币:欧元/欧元/瑞士,”货币:货币:14.454545455454545454544444444444444444444444444444444141414141414141414141414141414141414141413434,”,”,”,”,”,”,”,,,,,,,,,,,,,,,,,,,,,,,,,,货币货币”货币”货币:货币:货币:货币:货币:货币:货币:货币:美元/美元/美元/美元/美元/美元/CAD/CAD,”如如如如如如如如如如如如如75875\,“时间戳”:“149752449148\,{”货币\“:”英镑/日元\“,”汇率\“:”140.248 \“,”时间戳\“:”149752449230 \“,”元数据\“:{”计数\“:60},\”动作\“:[{”类型\“:”表格\“,”列\“:{”货币\“:”数值\“,”汇率\“:”配额\“,”计数\“:-1}”;
Type Type=new-TypeToken(){}.getType();
List List=new Gson().fromJson(json,类型);
用于(数据对象:列表){
for(HashMap:object.data){
Log.e(“mapItemStart”,“=========================”);
for(字符串项:map.keySet()){
Log.e(“mapItem”,item+“->”+map.get(item));
}
Log.e(“mapItemEnd”,“mapItemEnd=”);
}
}
}
公共静态类数据对象{
公开名单数据;
}

请阅读-总结是,这不是向志愿者讲话的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。请阅读-总结是,这不是解决志愿者问题的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。我已经尝试过,但在这里不起作用。您可以提供一些示例代码吗?我已经尝试过,但在这里不起作用。您可以提供一些示例代码吗?
private void parse() {        
    String json = "[{\"data\":[{\"currency\":\"EUR/JPY\",\"rate\":\"122.593\",\"timestamp\":\"1497524449141\"},{\"currency\":\"EUR/CHF\",\"rate\":\"1.08779\",\"timestamp\":\"1497524449234\"},{\"currency\":\"USD/CAD\",\"rate\":\"1.32772\",\"timestamp\":\"1497524449235\"},{\"currency\":\"AUD/USD\",\"rate\":\"0.75875\",\"timestamp\":\"1497524449148\"},{\"currency\":\"GBP/JPY\",\"rate\":\"140.248\",\"timestamp\":\"1497524449230\"}],\"metadata\":{\"count\":60},\"actions\":[{\"type\":\"table\",\"columns\":{\"currency\":\"Valuta\",\"rate\":\"Quota\"},\"count\":-1}]}]";
    Type type = new TypeToken<List<DataObject>>(){}.getType();
    List<DataObject> list = new Gson().fromJson(json, type);
    for (DataObject object : list) {
        for (HashMap<String, String> map : object.data) {
            Log.e("mapItemStart", "===============");
            for (String item : map.keySet()) {
                Log.e("mapItem", item + " -> " + map.get(item));
            }
            Log.e("mapItemEnd", "===============");
        }
    }
}

public static class DataObject {
    public List<HashMap<String, String>> data;
}