使用POJO方法的Java类中的JSON

问题描述:

所以我想在编码中使用POJO方法来处理JSON文件,所以我将有一个带getter和setter的类并声明其中的属性。我理解了原理,但我仍然缺乏理解如何处理例如我在Web上发现的以下测试JSON文件到Java类中的想法。使用POJO方法的Java类中的JSON

JSON:

{ 
"glossary": { 
    "title": "example glossary", 
    "GlossDiv": { 
     "title": "S", 
     "GlossList": { 
      "GlossEntry": { 
       "ID": "SGML", 
       "SortAs": "SGML", 
       "GlossTerm": "Standard Generalized Markup Language", 
       "Acronym": "SGML", 
       "Abbrev": "ISO 8879:1986", 
       "GlossDef": { 
        "para": "A meta-markup language, used to create markup languages such as DocBook.", 
        "GlossSeeAlso": ["GML", "XML"] 
       }, 
       "GlossSee": "markup" 
      } 
     } 
    } 
} 
} 

所以我明白我现在要创建一个名为词汇类,并具有属性getter和setter方法,从而为原则的方式是这样的:

@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonPropertyOrder({ 
"title", 
"GlossDiv", 
// GlossList, GlossEntry, ID, SortAs and so on also here probably? 
}) 
public class Glossary { 

@JsonProperty("title") 
private String title; 
@JsonProperty("GlossDiv") 
private Object glossDiv; // I am already at this point here not sure is it an Object? 
//I mean GlossDiv has other properties in itself so what do I put here? 
//since it is not an Array I don't use a Map or List do I ? 


@JsonProperty("title") 
public String getTitle() { 
return title; 
} 

@JsonProperty("title") 
public void setTitle(String title) { 
this.title = title; 
} 
} 

我也发现这个网站在网络上:http://www.jsonschema2pojo.org/,但只是复制&粘贴JSON我不会工作,可能是因为我没有宣布一切正确,因为我没有完全理解方法

+0

使用工具这样https://github.com/astav/JsonToJava演绎一个Java类层次结构还是想想你的JSON并自己编写适当的java类。试着了解JSON如何工作,阅读JavaScript对象和数组。还阅读了像杰克逊或GSON这样的框架。 – schneida

http://www.jsonschema2pojo.org/ 网站 源类型: 选择JSON选项 然后复制粘贴输出,将工作

+0

完美这就是为什么它没有工作我把它作为默认的“JSON Schema”现在我明白了,非常感谢 – ECasio

相反对象为glossDiv,我们应该使用类名,因为在这里GlossDiv是另一个对象在给定的JSON。以上JSON

@JsonProperty("GlossDiv") 
private GlossDiv glossDiv; 

转换为Java对象如下所示

com.json.pojo.ExploreJson.java 

package com.json.pojo; 

import java.util.HashMap; 
import java.util.Map; 
import com.fasterxml.jackson.annotation.JsonAnyGetter; 
import com.fasterxml.jackson.annotation.JsonAnySetter; 
import com.fasterxml.jackson.annotation.JsonIgnore; 
import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 
import com.fasterxml.jackson.annotation.JsonPropertyOrder; 

@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonPropertyOrder({ 
"glossary" 
}) 
public class ExploreJson { 

@JsonProperty("glossary") 
private Glossary glossary; 
@JsonIgnore 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

@JsonProperty("glossary") 
public Glossary getGlossary() { 
return glossary; 
} 

@JsonProperty("glossary") 
public void setGlossary(Glossary glossary) { 
this.glossary = glossary; 
} 

@JsonAnyGetter 
public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

@JsonAnySetter 
public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

} 
-----------------------------------com.json.pojo.GlossDef.java----------------------------------- 

package com.json.pojo; 

import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
import com.fasterxml.jackson.annotation.JsonAnyGetter; 
import com.fasterxml.jackson.annotation.JsonAnySetter; 
import com.fasterxml.jackson.annotation.JsonIgnore; 
import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 
import com.fasterxml.jackson.annotation.JsonPropertyOrder; 

@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonPropertyOrder({ 
"para", 
"GlossSeeAlso" 
}) 
public class GlossDef { 

@JsonProperty("para") 
private String para; 
@JsonProperty("GlossSeeAlso") 
private List<String> glossSeeAlso = null; 
@JsonIgnore 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

@JsonProperty("para") 
public String getPara() { 
return para; 
} 

@JsonProperty("para") 
public void setPara(String para) { 
this.para = para; 
} 

@JsonProperty("GlossSeeAlso") 
public List<String> getGlossSeeAlso() { 
return glossSeeAlso; 
} 

@JsonProperty("GlossSeeAlso") 
public void setGlossSeeAlso(List<String> glossSeeAlso) { 
this.glossSeeAlso = glossSeeAlso; 
} 

@JsonAnyGetter 
public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

@JsonAnySetter 
public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

} 
-----------------------------------com.json.pojo.GlossDiv.java----------------------------------- 

package com.json.pojo; 

import java.util.HashMap; 
import java.util.Map; 
import com.fasterxml.jackson.annotation.JsonAnyGetter; 
import com.fasterxml.jackson.annotation.JsonAnySetter; 
import com.fasterxml.jackson.annotation.JsonIgnore; 
import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 
import com.fasterxml.jackson.annotation.JsonPropertyOrder; 

@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonPropertyOrder({ 
"title", 
"GlossList" 
}) 
public class GlossDiv { 

@JsonProperty("title") 
private String title; 
@JsonProperty("GlossList") 
private GlossList glossList; 
@JsonIgnore 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

@JsonProperty("title") 
public String getTitle() { 
return title; 
} 

@JsonProperty("title") 
public void setTitle(String title) { 
this.title = title; 
} 

@JsonProperty("GlossList") 
public GlossList getGlossList() { 
return glossList; 
} 

@JsonProperty("GlossList") 
public void setGlossList(GlossList glossList) { 
this.glossList = glossList; 
} 

@JsonAnyGetter 
public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

@JsonAnySetter 
public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

} 
-----------------------------------com.json.pojo.GlossEntry.java----------------------------------- 

package com.json.pojo; 

import java.util.HashMap; 
import java.util.Map; 
import com.fasterxml.jackson.annotation.JsonAnyGetter; 
import com.fasterxml.jackson.annotation.JsonAnySetter; 
import com.fasterxml.jackson.annotation.JsonIgnore; 
import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 
import com.fasterxml.jackson.annotation.JsonPropertyOrder; 

@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonPropertyOrder({ 
"ID", 
"SortAs", 
"GlossTerm", 
"Acronym", 
"Abbrev", 
"GlossDef", 
"GlossSee" 
}) 
public class GlossEntry { 

@JsonProperty("ID") 
private String iD; 
@JsonProperty("SortAs") 
private String sortAs; 
@JsonProperty("GlossTerm") 
private String glossTerm; 
@JsonProperty("Acronym") 
private String acronym; 
@JsonProperty("Abbrev") 
private String abbrev; 
@JsonProperty("GlossDef") 
private GlossDef glossDef; 
@JsonProperty("GlossSee") 
private String glossSee; 
@JsonIgnore 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

@JsonProperty("ID") 
public String getID() { 
return iD; 
} 

@JsonProperty("ID") 
public void setID(String iD) { 
this.iD = iD; 
} 

@JsonProperty("SortAs") 
public String getSortAs() { 
return sortAs; 
} 

@JsonProperty("SortAs") 
public void setSortAs(String sortAs) { 
this.sortAs = sortAs; 
} 

@JsonProperty("GlossTerm") 
public String getGlossTerm() { 
return glossTerm; 
} 

@JsonProperty("GlossTerm") 
public void setGlossTerm(String glossTerm) { 
this.glossTerm = glossTerm; 
} 

@JsonProperty("Acronym") 
public String getAcronym() { 
return acronym; 
} 

@JsonProperty("Acronym") 
public void setAcronym(String acronym) { 
this.acronym = acronym; 
} 

@JsonProperty("Abbrev") 
public String getAbbrev() { 
return abbrev; 
} 

@JsonProperty("Abbrev") 
public void setAbbrev(String abbrev) { 
this.abbrev = abbrev; 
} 

@JsonProperty("GlossDef") 
public GlossDef getGlossDef() { 
return glossDef; 
} 

@JsonProperty("GlossDef") 
public void setGlossDef(GlossDef glossDef) { 
this.glossDef = glossDef; 
} 

@JsonProperty("GlossSee") 
public String getGlossSee() { 
return glossSee; 
} 

@JsonProperty("GlossSee") 
public void setGlossSee(String glossSee) { 
this.glossSee = glossSee; 
} 

@JsonAnyGetter 
public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

@JsonAnySetter 
public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

} 
-----------------------------------com.json.pojo.GlossList.java----------------------------------- 

package com.json.pojo; 

import java.util.HashMap; 
import java.util.Map; 
import com.fasterxml.jackson.annotation.JsonAnyGetter; 
import com.fasterxml.jackson.annotation.JsonAnySetter; 
import com.fasterxml.jackson.annotation.JsonIgnore; 
import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 
import com.fasterxml.jackson.annotation.JsonPropertyOrder; 

@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonPropertyOrder({ 
"GlossEntry" 
}) 
public class GlossList { 

@JsonProperty("GlossEntry") 
private GlossEntry glossEntry; 
@JsonIgnore 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

@JsonProperty("GlossEntry") 
public GlossEntry getGlossEntry() { 
return glossEntry; 
} 

@JsonProperty("GlossEntry") 
public void setGlossEntry(GlossEntry glossEntry) { 
this.glossEntry = glossEntry; 
} 

@JsonAnyGetter 
public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

@JsonAnySetter 
public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

} 
-----------------------------------com.json.pojo.Glossary.java----------------------------------- 

package com.json.pojo; 

import java.util.HashMap; 
import java.util.Map; 
import com.fasterxml.jackson.annotation.JsonAnyGetter; 
import com.fasterxml.jackson.annotation.JsonAnySetter; 
import com.fasterxml.jackson.annotation.JsonIgnore; 
import com.fasterxml.jackson.annotation.JsonInclude; 
import com.fasterxml.jackson.annotation.JsonProperty; 
import com.fasterxml.jackson.annotation.JsonPropertyOrder; 

@JsonInclude(JsonInclude.Include.NON_NULL) 
@JsonPropertyOrder({ 
"title", 
"GlossDiv" 
}) 
public class Glossary { 

@JsonProperty("title") 
private String title; 
@JsonProperty("GlossDiv") 
private GlossDiv glossDiv; 
@JsonIgnore 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

@JsonProperty("title") 
public String getTitle() { 
return title; 
} 

@JsonProperty("title") 
public void setTitle(String title) { 
this.title = title; 
} 

@JsonProperty("GlossDiv") 
public GlossDiv getGlossDiv() { 
return glossDiv; 
} 

@JsonProperty("GlossDiv") 
public void setGlossDiv(GlossDiv glossDiv) { 
this.glossDiv = glossDiv; 
} 

@JsonAnyGetter 
public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

@JsonAnySetter 
public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

} 
+0

好吧现在我明白了,谢谢 – ECasio