首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在json迭代中获取值

在json迭代中获取值
EN

Stack Overflow用户
提问于 2019-03-22 13:49:58
回答 1查看 423关注 0票数 0

我在这里要做的是在从API调用中获得的Json对象中迭代,以便搜索与键相关的值。但是,我无法从每次迭代中获得元组。来自以下代码:

代码语言:javascript
运行
复制
public void findResponseValue(String param, String inputValue){

    ArrayList<String> jsonArray = response.getBody().jsonPath().get("");
    Iterator<String> iterator = jsonArray.iterator();

    while(iterator.hasNext()){
        System.out.println(iterator.next());
        iterator.next();

    }

我收到以下错误

java.lang.ClassCastException:无法将类java.util.HashMap转换为java.lang.String类(java.util.HashMap和java.lang.String位于加载程序‘引导’的模块java.base中)

它正确地在arrayList上迭代,但是它试图从中获取一个值失败了。

响应体实例

代码语言:javascript
运行
复制
[
{
    "creationDate": "2017-05-29T07:45:43Z",
    "createdBy": "YYY.YYY",
    "lastUpdate": "2018-09-26T10:10:12Z",
    "updatedBy": "XXX.XXX",
    "id": 22,
    "partner": "ALS",
    "countries": [

    ],
    "countriesCodes": "NL",
    "salesChannels": [
        {
            "code": "Integrated"
        }
    ],
    "touchPoints": [

    ],
    "serviceEntity": "AWPNL",
    "flag": false,
    "activated": true,
    "type": "dcx"
},
{
    "creationDate": "2017-06-01T13:22:29Z",
    "createdBy": "YYY.YYY",
    "lastUpdate": "2017-11-30T12:24:36Z",
    "updatedBy": "MMM.T.NNN",
    "id": 39,
    "partner": "ALS",
    "countries": [

    ],
    "countriesCodes": "ES",
    "salesChannels": [
        {
            "code": "Integrated"
        }
    ],
    "touchPoints": [

    ],
    "serviceEntity": "AWPES",
    "flag": false,
    "activated": true,
    "type": "dcx"
}
]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-25 16:04:05

你的回应机构如下:

代码语言:javascript
运行
复制
{"data":[
{
    "creationDate": "2017-05-29T07:45:43Z",
    "createdBy": "YYY.YYY",
    "lastUpdate": "2018-09-26T10:10:12Z",
    "updatedBy": "XXX.XXX",
    "id": 22,
    "partner": "ALS",
    "countries": [

    ],
    "countriesCodes": "NL",
    "salesChannels": [
        {
            "code": "Integrated"
        }
    ],
    "touchPoints": [

    ],
    "serviceEntity": "AWPNL",
    "flag": false,
    "activated": true,
    "type": "dcx"
},
{
    "creationDate": "2017-06-01T13:22:29Z",
    "createdBy": "YYY.YYY",
    "lastUpdate": "2017-11-30T12:24:36Z",
    "updatedBy": "MMM.T.NNN",
    "id": 39,
    "partner": "ALS",
    "countries": [

    ],
    "countriesCodes": "ES",
    "salesChannels": [
        {
            "code": "Integrated"
        }
    ],
    "touchPoints": [

    ],
    "serviceEntity": "AWPES",
    "flag": false,
    "activated": true,
    "type": "dcx"
}
]}

这是我使用的方法(使用了Gson解析器API )。在for循环中,您可以比较您的键或值。

代码语言:javascript
运行
复制
    public static void findResponseValue(String param, String inputValue){

         JsonObject jsonObject = new JsonParser().parse(jsonResponseBody).getAsJsonObject();
         JsonElement jsonElement = jsonObject.get("data");
         JsonArray jsonArray = jsonElement.getAsJsonArray();

         for (int i = 0; i < jsonArray.size(); i++) {
            System.out.println(i+". Array element Content:"+jsonArray.get(i));

            JsonObject jsonObj = jsonArray.get(i).getAsJsonObject();

            System.out.println("\t creationDate:"+jsonObj.get("creationDate")+" partner:"+jsonObj.get("partner"));

         }       
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55301069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档