2017-11-08 3 views
0

Der automatisierte JSON zu POJO schlägt mit diesem JSON schlecht.Wie wird diese JSON-Antwort in POJO umgewandelt?

Bitte beachten Sie, dass sich die Anzahl der Artikel von einer Anfrage zur anderen unterscheidet. Hier schließe ich JSON-Antwort mit 2 Elementen ein.

{ 
    "status": 1, 
    "complete": 1, 
    "list": { 
     "734233858": { 
      "item_id": "734233858", 
      "resolved_id": "734233858", 
      "given_url": "https://blog.openshift.com/developing-single-page-web-applications-using-java-8-spark-mongodb-and-angularjs/", 
      "given_title": "", 
      "favorite": "0", 
      "status": "0", 
      "time_added": "1466459879", 
      "time_updated": "1466459862", 
      "time_read": "0", 
      "time_favorited": "0", 
      "sort_id": 1, 
      "resolved_title": "Developing Single Page Web Applications using Java 8, Spark, MongoDB, and AngularJS", 
      "resolved_url": "https://blog.openshift.com/developing-single-page-web-applications-using-java-8-spark-mongodb-and-angularjs/", 
      "excerpt": "In this post you will learn how to use a micro framework called Spark to build a RESTful backend. The RESTful backend is consumed by a single page web application using AngularJS and MongoDB for data storage. I’ll also show you how to run Java 8 on OpenShift.", 
      "is_article": "1", 
      "is_index": "0", 
      "has_video": "0", 
      "has_image": "1", 
      "word_count": "2727" 
     }, 
     "1015284226": { 
      "item_id": "1015284226", 
      "resolved_id": "1015284226", 
      "given_url": "https://sparktutorials.github.io/2015/08/04/spark-video-tutorials.html", 
      "given_title": "", 
      "favorite": "0", 
      "status": "0", 
      "time_added": "1466458750", 
      "time_updated": "1466458737", 
      "time_read": "0", 
      "time_favorited": "0", 
      "sort_id": 0, 
      "resolved_title": "Spark Video Tutorials", 
      "resolved_url": "http://sparktutorials.github.io/2015/08/04/spark-video-tutorials.html", 
      "excerpt": "Our friends over at learnhowtoprogram.com have been working on a series of Java courses for beginners, all of which feature Spark. This post contains an overview of these courses with direct links to their videos.", 
      "is_article": "1", 
      "is_index": "0", 
      "has_video": "0", 
      "has_image": "0", 
      "word_count": "41" 
     } 
    }, 
    "error": null, 
    "search_meta": { 
     "search_type": "normal" 
    }, 
    "since": 1509309762 
} 

Wie würden die POJOs für dieses JSON-Objekt aussehen?

Antwort

0

Idealerweise ist die list Eigenschaft im JSON-Objekt sollte eigentlich ein Array von Elementen anstelle von Innen JSON-Objekte. Sie können jedoch Folgendes für die Modellierung Ihrer Daten verwenden.

import org.codehaus.jackson.annotate.JsonProperty; 

import java.util.Map; 

class POJO { 

    private Integer status; 
    private Integer complete; 
    private String error; 
    private Long since; 

    @JsonProperty("search_meta") 
    private SearchMeta searchMeta; 

    private Map<String, Item> list; 

    public Integer getStatus() { 
     return status; 
    } 

    public void setStatus(Integer status) { 
     this.status = status; 
    } 

    public Integer getComplete() { 
     return complete; 
    } 

    public void setComplete(Integer complete) { 
     this.complete = complete; 
    } 

    public String getError() { 
     return error; 
    } 

    public void setError(String error) { 
     this.error = error; 
    } 

    public Long getSince() { 
     return since; 
    } 

    public void setSince(Long since) { 
     this.since = since; 
    } 

    public SearchMeta getSearchMeta() { 
     return searchMeta; 
    } 

    public void setSearchMeta(SearchMeta searchMeta) { 
     this.searchMeta = searchMeta; 
    } 

    public Map<String, Item> getList() { 
     return list; 
    } 

    public void setList(Map<String, Item> list) { 
     this.list = list; 
    } 
} 

class SearchMeta { 

    @JsonProperty("search_type") 
    private String searchType; 

    public String getSearchType() { 
     return searchType; 
    } 

    public void setSearchType(String searchType) { 
     this.searchType = searchType; 
    } 
} 

class Item { 

    @JsonProperty("item_id") 
    private String itemId; 

    @JsonProperty("resolved_id") 
    private String resolvedId; 

    // more attributes here 

    public String getItemId() { 
     return itemId; 
    } 

    public void setItemId(String itemId) { 
     this.itemId = itemId; 
    } 

    public String getResolvedId() { 
     return resolvedId; 
    } 

    public void setResolvedId(String resolvedId) { 
     this.resolvedId = resolvedId; 
    } 
} 

Here enthält weitere Informationen zum Parsen von JSON.

1

Sie können das list Objekt nicht vernünftig gut analysieren, da die Zahlen zufällig sind. Du musst das zu einer Karte machen. Ansonsten kann der Rest der Daten von Gson analysiert werden.

class Foo { 
    int status; 
    int complete; 
    TreeMap<String, Object> list; 
    Object error; 
    SearchMeta search_meta; 
    long since; 
} 

class SearchMeta { 
    String search_type; 
} 

Sie ersetzen die <String, Object> Karte mit <String, InnerObject>, wo InnerObject ist ein POJO für dieses Objekt

{ 
    "item_id": "734233858", 
    "resolved_id": "734233858", 
    "given_url": "https://blog.openshift.com/developing-single-page-web-applications-using-java-8-spark-mongodb-and-angularjs/", 
    "given_title": "", 
    "favorite": "0", 
    ... 
+0

danke cricket_007, meine Abstimmung wird zeigen, wenn ich zu 15 Ruf komme – Tlink

Verwandte Themen