2016-04-27 5 views
1

ähnliche Frage in javascript:Json Zugang Feldname "*", um Java-Klasse

Ich habe versucht, wikipedia api mit Retrofit (moshi-Wandler) in meinem android app zu behandeln. Aber ich kann Java-Klasse Text mit "*" nicht als String schreiben.

Wikipedia json Anfrage example.

Edit: wenn es hilft. Alles funktioniert außer String _; da es nicht "*" ist.

public class Text { 

    private String _; 
    private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

    public String get_() { 
    return _; 
    } 

    public void set_(String _) { 
    this._ = _; 
    } 

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

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

,

public class Section { 

    private Parse parse; 
    private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

    public Parse getParse() { 
    return parse; 
    } 

    public void setParse(Parse parse) { 
    this.parse = parse; 
    } 

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

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

} 

,

public class Parse { 

    private String title; 
    private Integer pageid; 
    private Text text; 
    private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

    public String getTitle() { 
    return title; 
    } 


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


    public Integer getPageid() { 
    return pageid; 
    } 


    public void setPageid(Integer pageid) { 
    this.pageid = pageid; 
    } 


    public Text getText() { 
    return text; 
    } 


    public void setText(Text text) { 
    this.text = text; 
    } 

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

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

} 
+0

Bitte geben Sie den Code ein, den Sie ausprobiert haben. –

+0

Ich kann einfach nicht Java-Klasse mit "*" Namen zu halten, um JSON – user345280

Antwort

2

Sie zeigen nicht die JSON-Bibliothek Sie verwendet und die Antwort ist für jeden anders. Ich werde Gson annehmen.

Sie können die @SerializedName Annotation verwenden, um einen anderen JSON-Schlüssel zu lesen/schreiben, als Sie den Feldnamen definieren.

@SerializedName("*") 
public String star; 

Dies wird produzieren JSON wie {"*": ...} und lesen JSON im gleichen Format.

Die meisten JSON-Bibliotheken in Java verfügen über einen Mechanismus, um dies zu tun. Wenn Sie also eine andere Bibliothek als Gson verwenden, müssen Sie in der Dokumentation nachlesen, wie Sie den Namen eines Felds ändern können.

+0

Ich benutzte Moshi. Geändert zu Gson und Antwort funktioniert tadellos – user345280

+1

Für Moshi ist es '@Json (Name =" * ")' –