Sto cercando di analizzare un JSON con la libreria GSON sulla mia app Android. Potrei analizzare correttamente un array JSON, ma ora ho bisogno di analizzare un'altra JSON, con questo estructure:Tentativo di analizzare JSON con GSON
{
"articles": [
{
"article": {
"articleId": 1,
"articleName": "Bocadillo de calamares",
"merchantId": 2,
"price": 3.5
},
"computable": true,
"orderArticleId": 3157,
"orderId": 203,
"price": 3.5,
"requestedDate": "2012-11-19 13:15:20",
"shared": true,
"status": "AS01_INITIAL"
},
{
"article": {
"articleId": 3,
"articleName": "Desayuno",
"merchantId": 2,
"price": 2.2
},
"computable": true,
"orderArticleId": 3158,
"orderId": 203,
"price": 0,
"requestedDate": "2012-11-19 13:17:30",
"shared": true,
"status": "AS01_INITIAL"
},
{
"article": {
"articleId": 2,
"articleName": "Café",
"merchantId": 2,
"price": 1.1
},
"computable": true,
"orderArticleId": 3156,
"orderId": 203,
"price": 1.1,
"requestedDate": "2012-11-19 13:15:20",
"shared": true,
"status": "AS01_INITIAL"
},
{
"article": {
"articleId": 1,
"articleName": "Bocadillo de calamares",
"merchantId": 2,
"price": 3.5
},
"computable": true,
"orderArticleId": 3155,
"orderId": 203,
"price": 3.5,
"requestedDate": "2012-11-19 12:40:17",
"shared": true,
"status": "AS01_INITIAL"
}
],
"comment": null,
"creationDate": "2012-11-19 12:06:41",
"customer": {
"creationDate": 1353321506000,
"customerId": 152,
"devices": [
{
"customerId": 152,
"deviceId": "2000",
"phone": null
}
],
"image": false,
"mail": null,
"name": null,
"password": null
},
"finishDate": null,
"group": 0,
"groupOrders": [],
"location": {
"location": "Table 1",
"locationId": 1,
"shopId": 2
},
"orderId": 203,
"parentOrderId": 192,
"score": null,
"shopId": 2,
"status": "OS01_INITIAL",
"ticketUrl": null,
"tip": null,
"total": 0,
"totalArticles": 0,
"type": "BILL"
}
I have a Order.class like this:
public class Order {
private final String orderId;
(....)
private final ArrayList<Articles> articles;
private final String group;
public Order() {
orderId = "";
(....)
articles = new ArrayList<Articles>();
group = "";
}
public String getOrderId() {
return orderId;
}
(... All getters for each element)
public ArrayList<Articles> getArticles() {
return articles;
}
}
E un Articles.class
public class Articles {
private final String orderArticleId;
(...)
private final ArrayList<Article> article;
public Articles() {
orderArticleId = "";
(....)
article = new ArrayList<Article>();
};
public String getPrice() {
return price;
}
(....All getters for each element)
public ArrayList<Article> getArticle() {
return article;
}
}
E, il mio principale attività cerco di ottenere tutte le informazioni whith questo:
final Gson gson = new Gson();
Order o = gson.fromJson(jsonData, Order.class);
System.out.println(" - " + o.getOrderId());
E funziona bene, ma se voglio ottenere articoli informazioni, VA i lues sono nulli e non so come posso ottenerlo.
provo con qualcosa di simile:
Type collectionType = new TypeToken<List<Merchants>>() {
}.getType();
data = gson.fromJson(response, collectionType);
e cerco di usare un ArticlesWrapper, ma non so come farlo esattamente. Ma penso di aver dimenticato qualcosa ... e non so cosa. In un'altra parte dell'app, ho deserializzato correttamente un JSON perché è un array, ma in questo caso non so come posso ottenere tutti i dati correttamente.
Se avete bisogno di ulteriori informazioni, vi fornirò !. Grazie!
Ciao Alex, grazie mille per la risposta. Non ho avuto abbastanza tempo per provare, ma se lavori ti darei tutta la mia reputazione !! Grazie ancora. – Pipeline
Alex è stato abbastanza coraggioso da fare il tuo lavoro: P – shkschneider