2016-02-26 3 views
0

Im, запрашивающий данные из instagram api при поиске любого тега. Взамен я получаю массивный кусок json-данных, соответствующий 20 картинкам. Ответ ниже чанк я использовал для создания моих POJO, онлайнКак получить конкретные бит json-ответа эффективно?

{ 
    "pagination": { 
    "next_max_tag_id": "1193052000552992097", 
    "deprecation_warning": "next_max_id and min_id are deprecated for this endpoint; use min_tag_id and max_tag_id instead", 
    "next_max_id": "1193052000552992097", 
    "next_min_id": "1193052554319844057", 
    "min_tag_id": "1193052554319844057", 
    "next_url": "https://api.instagram.com/v1/tags/cats/media/recent?access_token=631477962.1fb234f.f7c5cda97c7f4df983b1c764f066ed37&max_tag_id=1193052000552992097" 
    }, 
    "meta": { 
    "code": 200 
    }, 
    "data": [ 
    { 
     "attribution": null, 
     "tags": [ 
     "cats", 
     "caseworker", 
     "homestuck" 
     ], 
     "type": "image", 
     "location": null, 
     "comments": { 
     "count": 0, 
     "data": [] 
     }, 
     "filter": "Normal", 
     "created_time": "1456442969", 
     "link": "https://www.instagram.com/p/BCOkvoim1LZ/", 
     "likes": { 
     "count": 0, 
     "data": [] 
     }, 
     "images": { 
     "low_resolution": { 
      "url": "https://scontent.cdninstagram.com/t51.2885-15/s320x320/e35/12729405_224148847934280_1450226662_n.jpg?ig_cache_key=MTE5MzA1MjU1NDMxOTg0NDA1Nw%3D%3D.2", 
      "width": 320, 
      "height": 320 
     }, 
     "thumbnail": { 
      "url": "https://scontent.cdninstagram.com/t51.2885-15/s150x150/e35/12729405_224148847934280_1450226662_n.jpg?ig_cache_key=MTE5MzA1MjU1NDMxOTg0NDA1Nw%3D%3D.2", 
      "width": 150, 
      "height": 150 
     }, 
     "standard_resolution": { 
      "url": "https://scontent.cdninstagram.com/t51.2885-15/s640x640/sh0.08/e35/12729405_224148847934280_1450226662_n.jpg?ig_cache_key=MTE5MzA1MjU1NDMxOTg0NDA1Nw%3D%3D.2", 
      "width": 640, 
      "height": 640 
     } 
     }, 
     "users_in_photo": [], 
     "caption": { 
     "created_time": "1456442969", 
     "text": "Bitch! I'm fabulous! That's my case worker..she is obsessed with cats\n\n#cats #caseworker #homestuck", 
     "from": { 
      "username": "strider_inc", 
      "profile_picture": "https://scontent.cdninstagram.com/t51.2885-19/s150x150/12558836_953196128050469_1739102_a.jpg", 
      "id": "2322171747", 
      "full_name": "WE All 4EVER KAWAII TRASH GODS" 
     }, 
     "id": "1193052563471815092" 
     }, 
     "user_has_liked": false, 
     "id": "1193052554319844057_2322171747", 
     "user": { 
     "username": "strider_inc", 
     "profile_picture": "https://scontent.cdninstagram.com/t51.2885-19/s150x150/12558836_953196128050469_1739102_a.jpg", 
     "id": "2322171747", 
     "full_name": "WE All 4EVER KAWAII TRASH GODS" 
     } 
    } 

Так что, когда я делаю, что я получаю как 10-12 различных классов Pojo, в которую я должен отображающих эти данные. Теперь, во-первых ... Я просто пытаюсь это сделать, и у Im 100% Ill есть некоторые проблемы с отображением их. Я имею в виду, что gson сделает это для меня, но я не знаю, есть ли какие-то, что мне понадобится.

но самое главное моему приложению нужны только фотографии с низким стандартным рисунком, вся другая информация бесполезна для меня.

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 , Это работает, но я хочу, чтобы в кратчайшие сроки это делалось без полного отображения.

+0

Поскольку вы используете Gson у вас есть в основном два варианта: 1. не сопоставляйте POJO, просто возьмите JSON (для этого Gson имеет JsonElement); 2. используйте потоковый API (у Gson также есть это). Извините, я обычно использую Джексон, поэтому я не знаю кода для двух сценариев выше, но его довольно легко найти :) – fge

ответ

0

Используя класс Gson's JsonParser, вы можете проанализировать свой JSON в дереве JsonElements, а затем извлечь только те данные, которые вам нужны.

Например, для того, чтобы распечатать все адреса с низким разрешением, можно использовать следующий код:

String json = "..."; 

JsonParser parser = new JsonParser(); 
JsonObject object = parser.parse(json).getAsJsonObject(); 
JsonArray data = object.getAsJsonArray("data"); 

for (JsonElement element : data) { 
    JsonObject images = element.getAsJsonObject().getAsJsonObject("images"); 
    JsonObject lowResolution = images.getAsJsonObject("low_resolution"); 
    String url = lowResolution.getAsJsonPrimitive("url").getAsString(); 
    System.out.println(url); 
} 

Используя ваш пример JSON, это будет печатать:

https://scontent.cdninstagram.com/t51.2885-15/s320x320/e35/12729405_224148847934280_1450226662_n.jpg?ig_cache_key=MTE5MzA1MjU1NDMxOTg0NDA1Nw%3D%3D.2 
Смежные вопросы