1

我得到了 json 文件和第三方类:Dealer 和接口 IDealerAttributes(我不能更改它们中的任何一个);(我删除了包名和导入以使代码简单)

    JSON文件
    {
      "serviceURL": "com.mycompany.serviceURL",
      “经销商属性”:[
        {
          “语言”:“语言0”,
          "dealerAttributeName": "dealerAttributeName0",
          “更新日期”:0
        },
        {
          “语言”:“语言 1”,
          "dealerAttributeName": "dealerAttributeName1",
          “更新日期”:1
        }
      ]
    }

    类经销商{
        私有字符串服务URL;
        私有列表dealerAttributes;

        公共经销商(){
            经销商属性 = 新的 ArrayList();
        }

        //Getter 和 Setter...
    }

    公共接口 IDealerAttributes {
        公共字符串 getLanguage();
        公共字符串 getDealerAttributeName();
        公共长 getUpdateDate();
    }

一旦我使用:

gson.fromJson(jsonObj.toString(), Dealer.class);

我将从这一行得到例外:

将 json 字符串解组为对象的异常:com.google.gson.JsonParseException:JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@60e26ffd 无法反序列化 json 对象 [{"language":"language0","dealerAttributeName":"dealerAttributeName0" ,"updateDate":0},{"language":"language1","dealerAttributeName":"dealerAttributeName1","updateDate":1}] 给定类型 java.util.List

如何根据 Dealer.class、IDealerAttributes 读取这个 json 文件?

但是我可以添加一个类,比如说:

    公共类 DealerAttributes 实现 IDealerAttributes {
        私有字符串语言;
        私人字符串经销商属性名称;
        私人长更新日期;

        公共 DealerAttributes() {
        }

        //Getter 和 Setter...
    }

由于我是 json/gson 的新手,请您提供详细说明来帮助我吗?谢谢。

[已添加] 考虑 Dealer 类中是否有 100 个字段,并且在 Dealer 中使用/嵌套了另外 100 个接口。我在想是否有人有使用这种方式的经验:(MyType 是接口)

gson.registerTypeAdapter(MyType.class, new MyType());`
4

1 回答 1

1

您可以将其映射到地图列表,然后使用像http://code.google.com/p/orika/这样的 BeanMapper来获取更多信息性错误消息

于 2013-01-13T04:15:30.350 回答