如何获取一个数据对象的第一个数据对象(RESTapi)

How to get the first data object of a data object (REST api)

我有一个 REST api 包含这样的数据

{
   ...
   ... //<- more data here
   ...

   "currencies": {
       "BTN": {
          "name": "Bhutanese ngultrum",
          "symbol": "Nu."
       },
       "INR": {
          "name": "Indian rupee",
          "symbol": "₹"
       }
   }

  ...
  ... //<- more data here
  ...
}

我正在 java 做一个项目,我需要使用 okhttp 并从可用的休息中显示有关国家/地区的信息 api 之前我使用这个 api 它有所有货币数据都在一个数据数组中,这很有帮助,因为您可以从数组中获取第一个零对象,但是在他们更新 api 之后,他们将所有货币数据都设为一个对象,而我只想要第一个对象,我能得到它吗?

好的,所以你有两个选择...

选项 1. 像这样创建两个 classes 并使用 ObjectMapper class 为您进行自动反序列化。

class CurrencyData {
  String name;
  String symbol;
}

class CurrencyJsonResponse {
   CurrencyData INR;
   CurrencyData BTN;
}

public static void main(String[] args) {
   OkHttpClient client = // build an instance;
   ObjectMapper objectMapper = new ObjectMapper(); 
   ResponseBody responseBody = client.newCall(request).execute().body(); 
   CurrencyJsonResponse currencyResponse = objectMapper.readValue(responseBody.string(), CurrencyJsonResponse.class);
   //Get data by using getters on currencyResponse object
}

选项 2 您可以通过扩展 StdDeserializer<T> class 来编写自定义反序列化器。您必须以编程方式检查 JsonNode 解析树和 assemble 您想要的对象。

article 解释了如何操作并附带了一个工作代码示例