JSON到POJO:如何从唯一的JSON字段生成抽象java类名?
我想使用给定的JSON模式生成Java类 使用WikimediaAPI,我从搜索中接收页面信息 JSON模式: (给我带来问题的那一小部分) 如您所见,JSON到POJO:如何从唯一的JSON字段生成抽象java类名?,java,json,jackson,Java,Json,Jackson,我想使用给定的JSON模式生成Java类 使用WikimediaAPI,我从搜索中接收页面信息 JSON模式: (给我带来问题的那一小部分) 如您所见,352214字段是此搜索的唯一字段,使用POJO时会出现问题 我将Jackson2用作注释样式 波乔 导入java.util.HashMap; 导入java.util.Map; 导入com.fasterxml.jackson.annotation.JsonAnyGetter; 导入com.fasterxml.jackson.annotatio
352214
字段是此搜索的唯一字段,使用POJO时会出现问题
我将Jackson2用作注释样式 波乔
导入java.util.HashMap;
导入java.util.Map;
导入com.fasterxml.jackson.annotation.JsonAnyGetter;
导入com.fasterxml.jackson.annotation.JsonAnySetter;
导入com.fasterxml.jackson.annotation.JsonIgnore;
导入com.fasterxml.jackson.annotation.JsonInclude;
导入com.fasterxml.jackson.annotation.JsonProperty;
导入com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
“页面ID”,
“ns”,
“头衔”,
“摘录”
})
公共类{
@JsonProperty(“页面ID”)
私有整数pageid;
@JsonProperty(“ns”)
私有整数ns;
@JsonProperty(“所有权”)
私有字符串标题;
@JsonProperty(“摘录”)
私有字符串提取;
@杰索尼奥雷
私有映射additionalProperties=new HashMap();
@JsonProperty(“页面ID”)
公共整数getPageid(){
返回pageid;
}
@JsonProperty(“页面ID”)
public void setPageid(整数pageid){
this.pageid=pageid;
}
@JsonProperty(“ns”)
公共整数getNs(){
返回ns;
}
@JsonProperty(“ns”)
公共无效集(整数ns){
这是1.ns=ns;
}
@JsonProperty(“所有权”)
公共字符串getTitle(){
返回标题;
}
@JsonProperty(“所有权”)
公共无效集合标题(字符串标题){
this.title=标题;
}
@JsonProperty(“摘录”)
公共字符串getExtract(){
回流提取物;
}
@JsonProperty(“摘录”)
公共void setExtract(字符串提取){
this.extract=提取;
}
@JsonAnyGetter
公共映射getAdditionalProperties(){
返回此。附加属性;
}
@JSONANYSETER
public void setAdditionalProperty(字符串名称、对象值){
this.additionalProperties.put(名称、值);
}
}
\u 352214
类将仅适用于具有相同字段名的wiki搜索,每当我进行另一次搜索且该字段发生更改时,它就会崩溃。如何解决这个问题?没有标准的方法来解析这样的情况(当您不知道字段名时)。作为一个选项,您可以使用Jackson手动解析文件:
public void parseWikiResponse(String wikiResponse) {
JsonFactory jsonFactory = new JsonFactory();
ObjectMapper mapper = new ObjectMapper(jsonFactory);
JsonNode jsonNodes = mapper.readTree(wikiResponse);
Iterator<Map.Entry<String,JsonNode>> fieldsIterator = jsonNodes.fields();
while (fieldsIterator.hasNext()) {
Map.Entry<String,JsonNode> field = fieldsIterator.next();
/* Here you can find your field with unknown name using regExp eg */
field.getKey();
}
}
public void parseWikiResponse(字符串wikiResponse){
JsonFactory JsonFactory=新的JsonFactory();
ObjectMapper mapper=新的ObjectMapper(jsonFactory);
JsonNode jsonNodes=mapper.readTree(wikiResponse);
迭代器fieldsIterator=jsonNodes.fields();
while(fieldsIterator.hasNext()){
Map.Entry field=fieldsIterator.next();
/*在这里,您可以使用regExp eg找到名称未知的字段*/
field.getKey();
}
}
如果您只想进行解析,那么这种方法应该可以解决这个问题
在这个话题上有一个类似的问题:
希望能有所帮助
public void parseWikiResponse(String wikiResponse) {
JsonFactory jsonFactory = new JsonFactory();
ObjectMapper mapper = new ObjectMapper(jsonFactory);
JsonNode jsonNodes = mapper.readTree(wikiResponse);
Iterator<Map.Entry<String,JsonNode>> fieldsIterator = jsonNodes.fields();
while (fieldsIterator.hasNext()) {
Map.Entry<String,JsonNode> field = fieldsIterator.next();
/* Here you can find your field with unknown name using regExp eg */
field.getKey();
}
}