2017-10-11 13 views
1

Donc, je veux utiliser l'approche POJO pour gérer un fichier JSON dans mon code, donc j'aurai une classe avec des getters et des setters et j'en déclarerai les propriétés. J'ai compris le principe mais il me manque encore l'idée de comprendre comment je peux gérer par exemple le fichier JSON de test suivant que j'ai trouvé sur le web dans une classe java.JSON en classe Java utilisant l'approche POJO

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" 
      } 
     } 
    } 
} 
} 

donc la façon dont je compris le principe que je dois maintenant créer une classe appelée Glossaire et ont setters et getters pour les propriétés si quelque chose comme ceci:

@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; 
} 
} 

I également trouvé ce site sur le web: http://www.jsonschema2pojo.org/ mais il suffit de copier & coller le JSON je ne vais pas travailler probablement parce que je ne déclare pas tout droit puisque je ne comprends pas complètement l'approche

+0

Utilisez un outil comme celui-ci https://github.com/astav/JsonToJava pour en déduire une hiérarchie de classes Java ou pensez à votre JSON et écrivez vous-même les classes Java appropriées. Essayez de comprendre comment fonctionne JSON en premier, lisez les objets JavaScript et les tableaux. Lisez aussi des frameworks comme Jackson ou GSON. – schneida

Répondre

2

Sur http://www.jsonschema2pojo.org/ site dans Type de source: Choisir option JSON copier ensuite coller la sortie, il fonctionnera

+0

parfait c'est pourquoi ça n'a pas fonctionné je l'avais par défaut sur "JSON Schema" maintenant je l'ai compris merci beaucoup – ECasio

2

au lieu d'objet pour glossDiv, nous devrions utiliser le nom de classe, car ici GlossDiv est un autre objet dans la donnée JSON.

@JsonProperty("GlossDiv") 
private GlossDiv glossDiv; 

Conversion des ci-dessus JSON à des objets java est illustré ci-dessous

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

okay maintenant je l'ai compris merci – ECasio