gpt4 book ai didi

java - 在 Java 中将字符串转换为 Map

转载 作者:行者123 更新时间:2023-12-05 07:43:37 25 4
gpt4 key购买 nike

我正在使用 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 是数据库值,它是字符串。这是我要从中转换 map 的字符串。

"\"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\"}}"

我该怎么办??

最佳答案

它失败的原因是因为你试图反序列化的 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);

关于java - 在 Java 中将字符串转换为 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43627222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com