@JsonProperty
private Map<String, Object> myMap;
实现一个自定义反序列化程序,并将注释@jsonDeserialize(using=datedeserializer.class)
添加到您的字段中。
看一下这个例子:
您的JSON-bean:
public class Foo {
private String name;
@JsonProperty
@JsonDeserialize(using = DateDeserializer.class)
private Map<String, Object> dates;
[...] // getter, setter, equals, hashcode
}
public class DateDeserializer extends JsonDeserializer<Map<String, Object>> {
private TypeReference<HashMap<String, Object>> typeRef = new TypeReference<HashMap<String, Object>>() {};
@Override
public Map<String, Object> deserialize(JsonParser p, DeserializationContext ctxt, Map<String, Object> target) throws IOException, JsonProcessingException {
Map<String, Long> map = new ObjectMapper().readValue(p, typeRef);
for(Entry<String, Long> e : map.entrySet()){
Long value = e.getValue();
String key = e.getKey();
if(value instanceof Long){ // or if("date".equals(key)) ...
target.put(key, new Date(value));
} else {
target.put(key, value); // leave as is
}
}
return target;
}
@Override
public Map<String, Object> deserialize(JsonParser paramJsonParser, DeserializationContext ctxt) throws IOException, JsonProcessingException {
return this.deserialize(paramJsonParser, ctxt, new HashMap<>());
}
}
public static void main(String[] args) throws Exception {
Foo foo1 = new Foo();
foo1.setName("foo");
foo1.setData(new HashMap<String, Object>(){{
put("date", new Date());
put("bool", true);
put("string", "yeah");
}});
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(foo1);
System.out.println(jsonStr);
Foo foo2 = mapper.readValue(jsonStr, Foo.class);
System.out.println(foo2.equals(foo1));
}
如果发生错误,数据栏将是这样的字符串: 如果成功,数据字段将是一个对象: 我使用以下Kotlin代码对其进行反序列化: 模型定义如下: 当没有错误发生时,上面的代码工作正常。但是当错误发生时,会引发异常: 有没有办法将字段反序列化为对象或任何对象,并通过代码手动确定其类型?
使用jackson-module-Scala,我尝试使用Long as键序列化和反序列化一个带有内部映射的对象,但是Jackson将键序列化为字符串,如果gnoring类中EKINED的类型,它就不会反序列化为Long。是虫子吗?我做错什么了吗? null 示例:https://github.com/angelcervera/jackson-scala-map-bug
我是solr的新手,当我试图在Solr中序列化/反序列化一个Map时,我遇到了一个问题。 我在Java应用程序中使用Spring Data Solr,如下所示: 它在Solr中展平并序列化我地图,如下所示: 但是,当我运行搜索时,返回的对象始终将此字段设置为 NULL。反序列化不适用于此特定字段,看起来它无法识别键 1、键 2...作为地图的一部分。 有人知道如何使派生工作吗?我必须实现自定义转换
问题内容: 我正在尝试将以下有效负载发布到基于泽西岛的Web服务中: 我的泽西岛代码: 就在Jersey打电话给我时,我停了下来,我看到 当面的 地址正好与我要查找的内容(上面的JSON中的内容)完全冲了出来。但是,我的数据元组不存在。我知道Jersey正在为 Address es 调用我的no- arg构造函数,并且它的setter也被调用了,但是我晚上仍无法解决Jersey可能会或可能不会尝试
我正面临一种奇怪的行为。 Spark不能在Map[String, AvroObj]中序列化avro对象,即使我使用了avro-1.8.0,它使avro对象可序列化。 我怀疑SCHEMA$属性仍然不可序列化,但当我在闭包中单独使用AvroObj时,一切都很好。此外,我也毫无问题地广播了我的Map[String,AvroObj]。同样,我的avro对象只包含String和long。 然后,为了实现这一
我正在尝试在dropwzo资源中实现一个方法,该方法将为来自JS前端(使用DataTable)的调用提供服务。 该请求的查询参数如下所示: 列[0][数据]=0 列[1][数据]=iata 该请求来自用DataTables实现的JS前端,并使用服务器端处理。有关数据表如何在此处发送请求的信息: https://datatables.net/manual/server-side 我在定义上述查询参数