【问题标题】:Search value from JSON Array从 JSON 数组中搜索值
【发布时间】:2021-04-15 09:00:16
【问题描述】:

我有一个来自 JSON 数组的简单问题。

我的 JSON 对象是:

[
    {
        "id":"1bc4aa42-1ef9-11e7-b023-97a5ff9c3a97",
        "name":"DFB-572",
        "imei":13226005525791,
        "vehicle_params":{
            "vin":null,
            "make":null,
            "model":null,
            "plate_number":null
        }
    },
    {
        "id":"1bc6b4f4-1ef9-11e7-b6fd-7fb7b5ac771a",
        "name":"DFB-575",
        "imei":13226008595395,
        "vehicle_params":{
            "vin":null,
            "make":null,
            "model":null,
            "plate_number":null
        }
    }
]

我需要使用值为“DFB-572”的“名称”字段找到对象的“id”。我必须从 JSONarray 或 ArrayList 中找到这个值,它应该返回“id”的值(所以“1bc4aa42-1ef9-11e7-b023-97a5ff9c3a97”)。

谁能给我举个例子?

我的代码是:

HttpResponse<String> paluuREST = AbaXapi.HttpResponse(abaxString);
String x = paluuREST.getBody();

JSONObject obj = new JSONObject(x);
JSONArray body = obj.getJSONArray("id");
System.out.println(body);

ArrayList<Object> objects = new ArrayList<>();
for (Object o : body) {
    objects.add(o);
}

System.out.println("objects = " + objects);
Object getFirst = objects.get(0);

【问题讨论】:

标签: java json arraylist


【解决方案1】:

你可以这样做

JSONArray arr = new JSONArray(x);

for(int i = 0; i < arr.length(); i++) {
    JSONObject obj = arr.getJSONObject(i);

    if("DFB-572".equals(obj.getString("name")) {
        return obj.getString("id");
    }
}

但你必须确定,这个结构保持不变,值的类型不会改变。

探索docs 了解更多有用的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 2015-03-31
    相关资源
    最近更新 更多