gpt4 book ai didi

java - 由于 objectMapper.writeValueAsString 的 O/P 格式不正确而导致无法识别的字段异常

转载 作者:行者123 更新时间:2023-12-02 08:45:32 24 4
gpt4 key购买 nike

我正在尝试使用 Jackson - ObjectMapper 将我的 hashmap(JSON) 反序列化为 POJO 类。下面是 HashMap :

List<Object> setJSONValues = new ArrayList<Object>(Arrays.asList(requestObj));
List<String> setJSONKeys = apiUtility.readJSONKeys(new File("ABC.csv"));
HashMap<String, Object> requestMap = new HashMap<String, Object>();
if (setJSONKeys.size() == setJSONValues.size()) {
for (int i = 0; i < setJSONKeys.size(); i++) {
requestMap.put(setJSONKeys.get(i), setJSONValues.get(i));
}
}

我想使用对象映射器将此 requestMap 使用到我的 POJO 类中,如下所示:

objectMapper.readValue(objectMapper.writeValueAsString(requestMap), MyRequestDTO.class);

我收到以下错误:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段““apptDateTime”“(类 Collector.MyRequestDTO)

出现上述错误是因为我的 objectMapper.writeValueAsString(requestMap) 的 O/P 是:{"\"apptDateTime\"":"\"2019-03-19 10:00:00\"","\"meter\"":"\"8682\""

添加 HashMap O/P:

for (String s:requestMap.keySet())
System.out.println("Key is "+s+"Value is "+requestMap.get(s));

输出:键是“apptDateTime”值是“2019-03-19 10:00:00”键是 “meter”值为“8682”

最佳答案

您用于读取的实用方法无法按您的预期工作(这个:)

List<String> setJSONKeys = apiUtility.readJSONKeys(new  File("ABC.csv"));

它返回用双引号括起来的键和值,因此应该是 "apptDateTime" 的键实际上返回为 "\"apptDateTime\"" 。您可以在添加的调试输出中看到这一点:您没有在键或值周围添加引号,但输出仍然显示引号。

您可以通过删除换行引号来解决该错误,如下所示,但最好首先修复返回意外数据的函数。

    String key = removeQuotes(setJSONKeys.get(i));
String value = removeQuotes(setJSONValues.get(i))
requestMap.put(key, setJSONValues.get(i));

...

String removeQuotes(String key) {
key = key.trim();
key = key.substring(1, key.length() - 1); // remove quotes
return key.trim();
}

关于java - 由于 objectMapper.writeValueAsString 的 O/P 格式不正确而导致无法识别的字段异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61109699/

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