Java 如何正确映射此json响应?
我无法将这个wikipedia opensearch json响应映射到我的模型。Im使用gson映射响应Java 如何正确映射此json响应?,java,json,gson,Java,Json,Gson,我无法将这个wikipedia opensearch json响应映射到我的模型。Im使用gson映射响应 [ "Computer", [ "Computer", "Computer program", "Computer science", "Computer network", "Comp
[
"Computer",
[
"Computer",
"Computer program",
"Computer science",
"Computer network",
"Computer keyboard",
"Computer mouse",
"Computer security",
"Computer virus",
"Computer data storage",
"Computer hardware"
],
[
"",
"",
"",
"",
"",
"",
"",
"",
"",
""
],
[
"https://en.wikipedia.org/wiki/Computer",
"https://en.wikipedia.org/wiki/Computer_program",
"https://en.wikipedia.org/wiki/Computer_science",
"https://en.wikipedia.org/wiki/Computer_network",
"https://en.wikipedia.org/wiki/Computer_keyboard",
"https://en.wikipedia.org/wiki/Computer_mouse",
"https://en.wikipedia.org/wiki/Computer_security",
"https://en.wikipedia.org/wiki/Computer_virus",
"https://en.wikipedia.org/wiki/Computer_data_storage",
"https://en.wikipedia.org/wiki/Computer_hardware"
]
]
网址:
我的模型:
import lombok.Data;
@Data
public class OpensearchResponse {
String searchTerm;
String[] possibilities;
String[] empty;
String[] references;
}
当我尝试这样映射json响应时:
var opensearchResponse = gson.fromJson(jsonResponse, OpensearchResponse.class);
我得到这个错误
Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
我怀疑我的数据结构是非常错误的。但具体是什么?JSON有效字符串在顶级是一个带有键和值的对象,正如@azro所指出的,您是一个对象,使用gson或任何其他JSON解析器解析它不是一个有效的JSON字符串。这里有一个没有任何键的值对象。您必须将字符串解析到对象结构中。这个问题的要求与-您的JSON是数组格式,而不是对象格式。对象格式可以映射到相应的Java类(对象),而数组格式可以映射到Java列表(或集合)。映射时应该使用列表,而不是
OpensearchResponse
。此外,JSON外部数组的所有元素的格式都不相同(字符串v/s array/List)。如果所有元素的格式相同,则可以将其映射到List
或List
等。在您的情况下,它只能是List
。另一种方法是通过添加缺少的键(键值格式)以对象格式使用JSON。谢谢!我才意识到:)