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

如何获取REST API返回数据对象中currencies字段的首个子对象

Java解析对象结构currencies字段的实现方案

方法1:基于Jackson解析(Spring项目默认集成)

  • 无需额外调整实体类结构,直接通过JsonNode读取节点内容即可
    代码示例:
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import okhttp3.Response;

// 省略OkHttp请求逻辑,拿到响应串responseBody
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(responseBody);
JsonNode currenciesNode = rootNode.get("currencies");

// 空校验避免异常
if (currenciesNode != null && currenciesNode.isObject() && !currenciesNode.isEmpty()) {
    // 取首个子对象
    JsonNode firstCurrency = currenciesNode.fields().next().getValue();
    String currencyName = firstCurrency.get("name").asText();
    String currencySymbol = firstCurrency.get("symbol").asText();
    // 后续业务逻辑
}

方法2:基于Gson解析

  • 适合安卓、未集成Jackson的Java项目使用
    代码示例:
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import okhttp3.Response;

// 省略OkHttp请求逻辑,拿到响应串responseBody
Gson gson = new Gson();
JsonObject rootObj = gson.fromJson(responseBody, JsonObject.class);
JsonObject currenciesObj = rootObj.getAsJsonObject("currencies");

// 空校验避免异常
if (currenciesObj != null && !currenciesObj.isEmpty()) {
    // 取首个子对象
    JsonObject firstCurrency = currenciesObj.entrySet().iterator().next().getValue().getAsJsonObject();
    String currencyName = firstCurrency.get("name").getAsString();
    String currencySymbol = firstCurrency.get("symbol").getAsString();
    // 后续业务逻辑
}

注意事项

  • 需提前处理currencies为空对象、接口返回null的边界场景,避免抛出空指针或NoSuchElementException
  • JSON官方规范未定义对象键的排序规则,但你所使用的国家信息类公开API返回的currencies字段键顺序固定,和之前数组结构的返回顺序一致,可直接沿用该逻辑取首个元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:24:00