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无法解析。
答案 0 :(得分:1)
解析JSon时,您希望它具有某种结构。例如,您希望Result对象包含Orders而不包含字符串或其他内容。因此,解析器必须足够智能,以确定列表中可以包含哪些对象。除非您对集合进行参数化,否则无法知道这一点。据信,所有java泛型信息都在编译时被擦除。这不是真的。例如,Gson使用泛型来弄清楚如何解析特定的列表值。因此,如果您使用GSon解析器和List<Order>
,则不同的列表类型没有问题。
处理不同的列表项类是另一回事。如果您可以更改Json数据,则可以为每个列表项编码类名及其字段。如果绝对无法更改数据类,则必须恢复将json解释为分层键值对的集合,并自行进行反序列化。
可能this线程将有所帮助