我尝试Map使用@JsonProperty注释序列化一个包含 a 的对象,但是当我测试它时,我看到只有映射的键被序列化。我查了一下,但没有找到解决方案,我做错了什么?
public class People {
private final Map<Long,String> idToNameMap;
public People(@JsonProperty("idToNameMap") final Map<Long,String> idToNameMap) {
this.idToNameMap = idToNameMap;
}
}
public class PeopleTest {
private static final long ID_1 = 111l;
private static final long ID_2 = 222l;
private static final String NAME_1 = "name1";
private static final String NAME_2 = "name2";
private final ObjectMapper mapper = new ObjectMapper();
@Test
public void testFromAndToJSON() throws Exception {
Map<Long,String> idToNameMap = Maps.newHashMap();
idToNameMap.put(ID_1,NAME_1);
idToNameMap.put(ID_2,NAME_2);
mapper.writeValueAsString(new People(idToNameMap)); …Run Code Online (Sandbox Code Playgroud) 我看了很多,但到目前为止仍然无法得到答案,任何帮助都非常感谢!
我有一个简单String的Date字段映射,并尝试将JSON字符串读取到Java对象.
@JsonInclude(value=Include.NON_EMPTY)
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="dd-MMM-yyyy", timezone="PST")
protected Date eolAnnounceDate;
Run Code Online (Sandbox Code Playgroud)
但是,如果JSON字符串值为空,则会出现以下异常.你能告诉我怎么解决这个问题吗?我尝试了一些选项,但它们都是为了序列化.
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(Include.NON_NULL);
objectMapper.setSerializationInclusion(Include.NON_EMPTY);
Run Code Online (Sandbox Code Playgroud)
例外:
java.lang.IllegalArgumentException:无法解析Date值'NULL'(格式:"dd-MMM-yyyy"):Unparseable date:"NULL"com.fasterxml.jackson.databind.deser.std.DateDeserializers $ DateBasedDeserializer._parseDate( DateDeserializers.java:180)com.fasterxml.jackson.databind.deser.std.DateDeserializers $ DateDeserializer.deserialize(DateDeserializers.java:279)com.fasterxml.jackson.databind.deser.std.DateDeserializers $ DateDeserializer.deserialize(DateDeserializers. java:260)com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:464)com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:98)com.fasterxml. jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295)com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:230)com.fasterxml.jackson.databind.deser.std. CollectionDeserializer.deserialize(CollectionDeserializer.java:207)com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:23)com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java: 464)com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:98)com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295)com.fasterxml.jackson. databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)com.cisco.cre.dao.impl.ElasticsearchDAOImpl.getListByIdsFilter(ElasticsearchDAOImpl.的java:94)
谢谢 - 阿图尔
我正在编写一个名为的函数arrayToMap().我最初只是允许String数组,但我认为我可以使它通用所以任何类型的数组.我尝试了以下代码片段,但它告诉我T无法解析为一个类型:
public Map <T, Integer> arrayToMap( T [] arr ) {
assert( arr != null ) : "arrayToMap null array";
Map<T,Integer> res = new HashMap<>();
int ind = 0;
for ( T val: arr ) {
res.put(val, ind);
ind++;
}
return res;
}
Run Code Online (Sandbox Code Playgroud)
什么是正确的语法?
neo4j属性是否区分大小写?换一种说法; 这两个Cypher查询是相同还是不同:
MATCH (n:Person {name: "Someone"}) RETURN n;
MATCH (n:Person {name: "someone"}) RETURN n;
Run Code Online (Sandbox Code Playgroud) 我对以下方法的声纳主要违规行为:
private String getRequestId() {
final String uuid = UUID.randomUUID().toString();
return uuid.substring(uuid.lastIndexOf("-") + 1, uuid.length());
}
Run Code Online (Sandbox Code Playgroud)
Sonar建议我String.indexOf(char)在检查单个字符的索引时使用,因为它的执行速度比String.indexOf(String).
我明白了.
我没有得到的是如何以有效的方式在我的代码上应用这个建议.