我试图使用Jackson将JSON blob转换为实例化Java类对象的列表。只要JSON保持不变,这就相当简单了。但是,从服务器返回的每个JSON对象都以唯一的UUID开始,这意味着每个对象都是不同的。是这样的:
{
"863090b2-3d29-4829-9e01-5b03a6d5df04": {
"name": "datasource 1",
"dataSourceId": "863090b2-3d29-4829-9e01-5b03a6d5df04",
"lastmodified": "2015-06-30T14:53:12"
},
"40de3a9e-e436-41b1-a37d-8c1d548293bc": {
"name": "datasource 2",
"dataSourceId": "40de3a9e-e436-41b1-a37d-8c1d548293bc",
"lastmodified": "2015-06-30T14:52:46"
},
"f042db5f-455d-4edb-b8b5-610767735e64": {
"name": "datasource 3",
"dataSourceId": "f042db5f-455d-4edb-b8b5-610767735e64",
"lastmodified": "2015-06-30T14:53:05"
},
"cd6323aa-ec27-4793-bb16-60729a556b97": {
"name": "datasource 4",
"dataSourceId": "cd6323aa-ec27-4793-bb16-60729a556b97",
"lastmodified": "2015-06-30T14:52:55"
}
}
请注意,每个JSON对象都以不同的名称开头。如果每个JSON对象都使用相同的名称(如“数据”)而不是UUID启动,那么这将是一个骗局。现在我得到了以下异常:
JAVAlang.RuntimeException:com。fasterxml。杰克逊。数据绑定。JsonMappingException:无法反序列化java实例。util。ArrayList在[Source:[B@20e6c4dc;行:1,列:1]
这是我从获得异常的代码段:
public List<Schema> getAllSchemas(String clientToken) {
String endpoint = ALL_SCHEMAS_ROUTE + clientToken;
byte[] responseBodyBytes = makeHttpRequest(endpoint, HttpMethod.GET, null).getBytes();
List<Schema> allSchemas = null;
try {
allSchemas = objectMapper.readValue(responseBodyBytes,
new TypeReference<List<Schema>>(){});
} catch (Exception e) {
throw new RuntimeException(e);
}
return allSchemas;
}
请注意,Jackson将取消只包含其中一个对象的Blob,但不会执行整个列表。
我的局限性如下:
非常感谢您的帮助!
我能想到的最有希望的方法是将整个事情反序列化为映射
问题内容: 我必须从对象列表中序列化JSON。生成的JSON必须看起来像这样: 当我简单地将其序列化时,我缺少类型/键“模型”: 相反,我只是得到这个: 如何为每个对象添加“模型”而不必编写带有属性“模型”的傻包装类? 我的课程如下: 问题答案: 没有内置的方法可以做到这一点。您必须自己编写。就像是 然后注释该字段,以便它使用它 这将序列化为 如果要同时对此序列化和反序列化,则还需要一个自定义的反
我有以下列表,里面是另一个列表,然后是字符串列表 <代码>列表 示例 除了执行嵌套循环并最终替换列表之外,还有更好的方法吗?也许有溪流?
主要内容:1 编写核心类,2 运行测试本文讲解如何将一个Java对象序列化为一个json文件,然后读取该json文件读取回对象。在下面的示例中,我们创建Student类。使用Jackson存储到一个student.json文件,该文件拥有Student对象的JSON表示形式。 1 编写核心类 MainApp: 2 运行测试
假设我有一个DTO类,如下所示: 现在我有一个返回MyDTO对象列表的API。但我想根据一些标准从这个对象列表中过滤掉并获取单个对象MyDTO。(比如属性1==一些值)。 我知道,在获得对象列表后,我可以使用流来实现这一点。但杰克逊有什么办法吗?因此,在我的fiegn客户端调用中,我可以将单个对象作为返回类型。 提前感谢!
我有一个抽象的超类A,我有几个具体的子类B,C,D 在序列化方面,我执行以下操作: 没问题。我现在想反序列化这个。我知道我不能实例化一个抽象类,那么这是如何实现的呢? 这不起作用: 编辑:我把这个添加到我的抽象超类中:(仍然没有运气) 再次编辑:我现在遇到以下错误: 看看JSON,@class不在那里。我怎样才能做到?我试过: 但这并没有奏效。有这方面的例子吗?如何告诉对象映射器对类使用我的注释?
我目前正在开发一个Java web应用程序,它使用Magento REST API公开的JSON数据。api返回的数据示例如下: 我的应用程序中有一个Java类,如下所示: 我想对数据进行反序列化,并将其转换为,但我总是得到以下错误: 这是我用来将JSON响应反序列化为ArrayList的语句行: 有人能分享一些见解吗?我看到一些例子,返回的JSON对象前面没有任何ID。那是因为我做错了什么吗?非