GSON не может разобрать коллекцию ресторана Zomato - PullRequest
0 голосов
/ 21 мая 2018

Я использую Java и Akka для разработки нового приложения дома, но я сталкиваюсь с проблемами вставки ответа API от Zomato.

Ответ JSON можно найти ниже.Я создал Class Restaurant со списком объектов Restaurant.Как мне разобрать это?

{
"results_found": 131,
"results_start": 0,
"results_shown": 10,
"restaurants": [
    {
        "restaurant": {
            "R": {
                "res_id": 6103211
            },
            "apikey": "4972ea7a10293fc07e997364eef03d3d",
            "id": "6103211",
            "name": "Dishoom",
            "url": "https://www.zomato.com/london/dishoom-covent-garden?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1",
            "location": {
                "address": "12 Upper St Martin's Lane, Covent Garden, London WC2H 9FB",
                "locality": "Upper St Martin's Lane, Covent Garden",
                "city": "London",
                "city_id": 61,
                "latitude": "51.5124170000",
                "longitude": "-0.1271640000",
                "zipcode": "WC2H 9FB",
                "country_id": 215,
                "locality_verbose": "Upper St Martin's Lane, Covent Garden, London"
            },
            "switch_to_order_menu": 0,
            "cuisines": "Indian, North Indian, Curry, Cafe",
            "average_cost_for_two": 35,
            "price_range": 2,
            "currency": "\u00a3",
            "offers": [],
            "thumb": "https://b.zmtcdn.com/data/res_imagery/6103211_RESTAURANT_19f7b41684765da1a700c2818f16cde0.jpg?fit=around%7C200%3A200&crop=200%3A200%3B%2A%2C%2A",
            "user_rating": {
                "aggregate_rating": "4.9",
                "rating_text": "Excellent",
                "rating_color": "3F7E00",
                "votes": "919"
            },
            "photos_url": "https://www.zomato.com/london/dishoom-covent-garden/photos?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1#tabtop",
            "menu_url": "https://www.zomato.com/london/dishoom-covent-garden/menu?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1&openSwipeBox=menu&showMinimal=1#tabtop",
            "featured_image": "https://b.zmtcdn.com/data/res_imagery/6103211_RESTAURANT_19f7b41684765da1a700c2818f16cde0.jpg",
            "has_online_delivery": 0,
            "is_delivering_now": 0,
            "include_bogo_offers": true,
            "deeplink": "zomato://restaurant/6103211",
            "has_table_booking": 0,
            "events_url": "https://www.zomato.com/london/dishoom-covent-garden/events#tabtop?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1",
            "establishment_types": []
        }
    },

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Если json точно такой же, как вы вставили здесь, похоже, что это не правильный json.Попробуйте с этим:

  {
    "results_found": 131,
    "results_start": 0,
    "results_shown": 10,
    "restaurants": [{
        "restaurant": {
            "R": {
                "res_id": 6103211
            },
            "apikey": "4972ea7a10293fc07e997364eef03d3d",
            "id": "6103211",
            "name": "Dishoom",
            "url": "https://www.zomato.com/london/dishoom-covent-garden?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1",
            "location": {
                "address": "12 Upper St Martin's Lane, Covent Garden, London WC2H 9FB",
                "locality": "Upper St Martin's Lane, Covent Garden",
                "city": "London",
                "city_id": 61,
                "latitude": "51.5124170000",
                "longitude": "-0.1271640000",
                "zipcode": "WC2H 9FB",
                "country_id": 215,
                "locality_verbose": "Upper St Martin's Lane, Covent Garden, London"
            },
            "switch_to_order_menu": 0,
            "cuisines": "Indian, North Indian, Curry, Cafe",
            "average_cost_for_two": 35,
            "price_range": 2,
            "currency": "\u00a3",
            "offers": [],
            "thumb": "https://b.zmtcdn.com/data/res_imagery/6103211_RESTAURANT_19f7b41684765da1a700c2818f16cde0.jpg?fit=around%7C200%3A200&crop=200%3A200%3B%2A%2C%2A",
            "user_rating": {
                "aggregate_rating": "4.9",
                "rating_text": "Excellent",
                "rating_color": "3F7E00",
                "votes": "919"
            },
            "photos_url": "https://www.zomato.com/london/dishoom-covent-garden/photos?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1#tabtop",
            "menu_url": "https://www.zomato.com/london/dishoom-covent-garden/menu?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1&openSwipeBox=menu&showMinimal=1#tabtop",
            "featured_image": "https://b.zmtcdn.com/data/res_imagery/6103211_RESTAURANT_19f7b41684765da1a700c2818f16cde0.jpg",
            "has_online_delivery": 0,
            "is_delivering_now": 0,
            "include_bogo_offers": true,
            "deeplink": "zomato://restaurant/6103211",
            "has_table_booking": 0,
            "events_url": "https://www.zomato.com/london/dishoom-covent-garden/events#tabtop?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1",
            "establishment_types": []
        }
    }]
}
0 голосов
/ 21 мая 2018

Первое, что есть the JSON is invalid.Я предполагаю, что вы можете управлять действительным JSON.После проверки JSON.

Сначала создайте класс POJO для ресторана.

Свойства для класса Ресторан:

R: obj
apikey: string
location: obj
.... like .....

добавить все необходимые поля.

После этого используйте код для анализа.но сначала, извлеките рестораны array из JSON.

gson.fromJson(restaurants, Restaurant[].class);
...