java - 如何解析未定义长度的剩余对象响应

标签 java rest gson

我有一个 API,其端点之一返回此 json 对象(来自此 API )

问题是,它不是一个数组!它是一个简单的对象。但是,如果您单击该链接并想“这个文档应该是什么”:“BASE”实际上代表“USD”这样的货币。所以最终我们得到了货币:信息对的映射。

如何使用 Gson 将其解析为 java 对象?哪里有未知数量的“BASE”:“INFO”映射? ( key 本质上是未知的)

 {
  "BASE": {
    "commoditymarketvalue": 0,
    "futuremarketvalue": 0,
    "settledcash": 0,
    "exchangerate": 0,
    "sessionid": 0,
    "cashbalance": 0,
    "corporatebondsmarketvalue": 0,
    "warrantsmarketvalue": 0,
    "netliquidationvalue": 0,
    "interest": 0,
    "unrealizedpnl": 0,
    "stockmarketvalue": 0,
    "moneyfunds": 0,
    "currency": "string",
    "realizedpnl": 0,
    "funds": 0,
    "acctcode": "string",
    "issueroptionsmarketvalue": 0,
    "key": "string",
    "timestamp": 0,
    "severity": 0
  }
}

最佳答案

您想将其反序列化为字符串映射到某个 pojo 吗?就像这里:How to de-serialize a Map<String, Object> with GSON

(审核后编辑) 解决方案来自网址:

static class PersonData {
    int age;
    String surname;
    public String toString() {
      return "[age = " + age + ", surname = " + surname + "]";
    }
  }

  public static void main(String[] args) {
    String json = "{\"Thomas\": {\"age\": 32,\"surname\": \"Scott\"},\"Andy\": {\"age\": 25,\"surname\": \"Miller\"}}";
    System.out.println(json);
    Gson gson = new Gson();
    Map<String, PersonData> decoded = gson.fromJson(json, new TypeToken<Map<String, PersonData>>(){}.getType());
    System.out.println(decoded);
  }

如果你想要更灵活,你可以将其反序列化为 Map.class 并根据需要遍历它。

关于java - 如何解析未定义长度的剩余对象响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67200452/

相关文章:

java - 如何使用 Spring 调度程序在每个时区的凌晨 0 点做一些工作?

node.js - 寻找具有关联支持的 sequelize.js REST API 生成器

java - 在序列化期间忽略 Jackson JsonIdentityInfo

java - 使用泛型在 Java 中实现工厂模式

java - 如何记录/使用 selenium 处理组合框并选择 dijit 使用的项目?

Java Http服务器错误: Access restriction: The type 'HttpServer' is not API

java - 如何编写使用 json 格式作为对象列表的 REST API 方法

java - Gson序列化抛出LazyInitializationException

java - 我将如何为可以处理动态字段的 Gson 对象建模?

android - Gradle Javadoc 失败并显示 "error: package ... does not exist"