You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何从Rest请求返回的JSON对象中提取特定字段的值

解决方案

问题说明

你当前代码的解析逻辑默认接口返回根节点下存在data字段对应JSON数组,但你贴出的接口响应示例根节点直接包含datas字段,我们分两种常见场景给出实现方案:

场景1:接口返回结构与你贴出的示例完全一致(无外层data数组)

返回结构示例:

{"value":"DRAGON","datas":9.5}

调整后的代码如下:

public String getData(String value) throws ParseException {
    final String url = "https://v1/supplier/suggest/{value}";
    Map<String, String> params = new HashMap<String, String>();
    params.put("value", value);
    HttpEntity<?> httpEntity = new HttpEntity<>(this.getAuthHeaders());
    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<String> tpBody = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class, params);
    JSONParser parser = new JSONParser();
    JSONObject json = (JSONObject) parser.parse(tpBody.getBody());
    // 直接从根节点提取datas字段,转为Double类型
    Double datas = (Double) json.get("datas");
    System.out.println(datas);
    // 按需返回对应值即可
    return datas.toString();
}

场景2:你贴出的响应示例为data数组内单个元素的结构(接口返回带外层data数组)

实际返回结构示例:

{
  "data": [
    {"value":"DRAGON","datas":9.5}
  ]
}

调整后的代码如下:

public String getData(String value) throws ParseException {
    final String url = "https://v1/supplier/suggest/{value}";
    Map<String, String> params = new HashMap<String, String>();
    params.put("value", value);
    HttpEntity<?> httpEntity = new HttpEntity<>(this.getAuthHeaders());
    RestTemplate restTemplate = new RestTemplate();
    ResponseEntity<String> tpBody = restTemplate.exchange(url, HttpMethod.GET, httpEntity, String.class, params);
    JSONParser parser = new JSONParser();
    JSONObject json = (JSONObject) parser.parse(tpBody.getBody());
    JSONArray jsonArray = (JSONArray) json.get("data");
    if (jsonArray.isEmpty()) {
        System.out.println("No Data in JsonArray");
        return null;
    }
    // 把数组第一个元素转为JSONObject,再提取datas字段
    JSONObject firstItem = (JSONObject) jsonArray.get(0);
    Double datas = (Double) firstItem.get("datas");
    System.out.println(datas);
    return datas.toString();
}

内容的提问来源于stack exchange,提问作者JavaGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:54:03