如何解析未定义长度的rest对象响应

dced5bon  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(251)

这个问题在这里已经有答案了

如何用gson反序列化map<string,object>(2个答案)
三天前关门了。
我有一个api,它的一个端点返回这个json对象(来自这个api)
问题是,它不是数组!它是一个单一的简单对象。但是如果你点击这个链接并且认为“这个文档应该是什么样子的”:“base”实际上代表一种货币,比如“usd”。最后我们得到了currency:information pairs.
如何使用gson将其解析为java对象?如果存在未知数量的“base”:“info”Map(钥匙基本上是未知的)

{
  "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
  }
}
jgovgodb

jgovgodb1#

是否要将其反序列化为某个pojo的字符串Map?比如:如何用gson反序列化map<string,object>?
(审查后编辑)来自url的解决方案:

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,然后随意遍历它。

相关问题