gpt4 book ai didi

java - java中的JSON反序列化List,没有类型信息

转载 作者:行者123 更新时间:2023-12-01 15:19:10 25 4
gpt4 key购买 nike

class Result {
private List orders;// Holds objects of class Object only.
private Number a;
private Number b;
}

class Order {
private Number oid;
private Number status;
}

public class TestClass {
public static void main(String... args){
String testString = "{\"orders\":[{\"oid\":\"347\",\"status\":\"1\"},{\"oid\":\"348\",\"status\":\"1\"}],\"a\":14.15,\"b\":0}";
Gson gson = new GsonBuilder().create();
Result res = gson.fromJson( testString, Result.class );
}

无法修改类结果。 Json没有列表的类型信息,Json无法解析。

  1. 假设我们无法更改这些类,那么如何解决这个问题?考虑可能存在多个不同类型的此类列表的情况。
  2. 如果列表包含多种类型的对象怎么办?

最佳答案

解析 JSon 时,您希望它具有特定的结构。例如,您期望 Result 对象包含订单而不是字符串或其他内容。因此解析器必须足够智能,能够弄清楚列表中可以包含哪些类型的对象。除非您对集合进行参数化,否则无法知道这一点。据信所有java泛型信息在编译时都会被删除。这不是真的。例如,Gson 使用泛型来确定如何解析特定列表值。因此,如果您使用 GSon 解析器和 List<Order>不同列表类型没有问题。

处理不同的列表项类是另一回事。如果您可以更改 Json 数据,则对于每个列表项,您可以对类名称及其字段进行编码。如果您绝对无法更改数据类,则必须恢复将 json 解释为分层键值对的集合,并自行进行反序列化。

可能this线程会有帮助

关于java - java中的JSON反序列化List,没有类型信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11206270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com