如何获取一个数据对象的第一个数据对象(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 解释了如何操作并附带了一个工作代码示例
我有一个 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 解释了如何操作并附带了一个工作代码示例