gpt4 book ai didi

java - 将 json 转换为对象

转载 作者:行者123 更新时间:2023-11-30 06:20:25 26 4
gpt4 key购买 nike

我正在尝试将下面的 json 转换为 java bean,需要你的帮助

排序.json

{
"messages": [
{
"GG_RETAIL_BRANCH_SAVING_SELLER": [
"hello jackson 1",
"hello jackson 2",
"hello jackson 3"
]
},
{
"GG_RETAIL_CONNECT_SAVINGS_SELLER": [
"hello jackson 4",
"hello jackson 5",
"hello jackson 6"
]
}
]
}

我的 Bean 看起来像

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public class Sort implements Serializable{

/**
*
*/
private static final long serialVersionUID = 8122222228160190915L;
/* private String name;
private int age;*/
private Map<String,List<String>> messages;

@Override
public String toString() {
return "AdamSort [messages=" + messages + "]";
}

public Map<String, List<String>> getMessages() {
return messages;
}

public void setMessages(Map<String, List<String>> messages) {
this.messages = messages;
}
}

我的测试课是

import java.io.File;
import java.io.IOException;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

public class JacksonExample {

/**
* @param args
*/
public static void main(String[] args) {
ObjectMapper mapper = new ObjectMapper();

try {
Sort sort = mapper.readValue(new File("C:\\Sort.json"), Sort.class);
System.out.println(sort);

} catch (JsonGenerationException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

我看到的错误是

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.LinkedHashMap out of START_ARRAY token
at [Source: C:\Sort.json; line: 2, column: 3] (through reference chain: com.test.Sort["messages"])
at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:219)
at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:212)
at org.codehaus.jackson.map.deser.std.MapDeserializer.deserialize(MapDeserializer.java:246)
at org.codehaus.jackson.map.deser.std.MapDeserializer.deserialize(MapDeserializer.java:33)
at org.codehaus.jackson.map.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:299)
at org.codehaus.jackson.map.deser.SettableBeanProperty$MethodProperty.deserializeAndSet(SettableBeanProperty.java:414)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:697)
at org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:580)
at org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2732)
at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1817)
at com.test.util.JacksonExample.main(JacksonExample.java:28)

请建议:

最佳答案

查看 JSON 字符串时,messages是 Map 列表。

替换Map<String,List<String>>List<Map<String, List<String>>>Sort.java并尝试一下。

关于java - 将 json 转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48263768/

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