【问题标题】:How to get the first data object of a data object (REST api)如何获取数据对象的第一个数据对象(REST api)
【发布时间】:2021-12-20 14:55:38
【问题描述】:

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

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

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

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

我正在用 java 做一个项目,我需要使用 okhttp 并从可用的 rest api 中显示有关国家/地区的信息,并且在我使用此 api 之前,它具有数据数组中的所有货币数据,这很有帮助你可以从数组中获取第一个零对象,但是在他们更新了 api 之后,他们将货币中的所有数据都变成了一个对象,我只想要第一个对象,有什么方法可以得到它吗?

【问题讨论】:

    标签: java api rest okhttp


    【解决方案1】:

    好的,所以这里有两个选择...

    选项 1。 像这样创建两个类,并使用ObjectMapper 类为您进行自动去实化。

    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&lt;T&gt; 类来编写自定义解现实器。您必须以编程方式检查 JsonNode 解析树并组装所需的对象。

    这个article 解释了如何做到这一点并附带一个工作代码示例

    【讨论】:

    • 如果我从一开始就不知道货币,我怎么能得到货币,假设用户给了一个国家“阿鲁巴”,那么它的货币是 AWG,我知道它的 AWG,但程序不我能在这里做什么
    • 你需要从用户那里得到输入并进入你的程序
    猜你喜欢
    • 1970-01-01
    • 2020-02-07
    • 1970-01-01
    • 2022-11-27
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 1970-01-01
    相关资源
    最近更新 更多