【问题标题】:converting string to to Map in Java在Java中将字符串转换为Map
【发布时间】:2017-09-23 10:40:40
【问题描述】:

我正在使用jackson Objectmapper将对象转换为字符串并将其作为varchar2保存到数据库中。我的代码是

AuditDataLog dataLog = new AuditDataLog();
ObjectMapper mapper = new ObjectMapper();
dataLog.setData(mapper.writeValueAsString(obj));

它作为 Varchar2 保存到数据库中。但是当我从数据库中检索此值并想使用 ObjectMapper 将其转换为 Map 时,它不能这样做。它会给出这样的异常

"com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate value of type [map type; class java.util.HashMap"

这是我的代码

Map map = mapper.readValue(obj,HashMap.class));

obj 是数据库值,它是字符串。这是我要转换映射的字符串。

"\"MerOrder\":{\"cusAccPartyId\":\"4632\",\"cusAccParty\":{\"fullName\":\"Kariban\"},\"merAccPartyId\":\"4800\",\"merAccParty\":{\"fullName\":\"Golam Sarwer\"},\"season\":\"a455\",\"tfReceiveDate\":\"26 Apr 2017\",\"styleName\":\"a123\",\"styleNo\":\"s345\",\"sizeRange\":\"1\",\"merVariantValue\":{\"name\":\"XL-XS\"}}"

我该怎么办??

【问题讨论】:

  • 您保存的不是哈希图。它是MerOrder 类型的对象

标签: java json hashmap jackson


【解决方案1】:

它失败的原因是您尝试反序列化的String 不是有效的json,您需要将其包裹在花括号中以使其成为有效的json。下面应该可以正常工作:

String s = "\"MerOrder\":{\"cusAccPartyId\":\"4632\",\"cusAccParty\":{\"fullName\":\"Kariban\"},\"merAccPartyId\":\"4800\",\"merAccParty\":{\"fullName\":\"Golam Sarwer\"},\"season\":\"a455\",\"tfReceiveDate\":\"26 Apr 2017\",\"styleName\":\"a123\",\"styleNo\":\"s345\",\"sizeRange\":\"1\",\"merVariantValue\":{\"name\":\"XL-XS\"}}";
ObjectMapper mapper = new ObjectMapper();
HashMap value = mapper.readValue("{" + s + "}", HashMap.class);
System.out.println(value);

【讨论】:

    猜你喜欢
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2014-02-05
    • 2014-07-08
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多