2011-06-27 4 views
0

Я буду держать его кратким, у меня проблема с некоторыми действительно плохо выкладывается Json (от того, что я могу сказать, во всяком случае), я отходили от веб-сервиса, я м новым для Java/Android/JSON, так что любая помощь будет с благодарностью принято, структура Json является:Разбор странно построен JSon/Gson

> {"cursor": 
>   {"currentPageIndex":0, 
>   "estimatedResultCount":32, 
>     "pages":{ 
>       "label":1, 
>       "start":0}, 
>   "responseDetails":null, 
>   "responseStatus":200}, "results":[ 
>   {"accuracy":24140, 
>   "addressLines": 
>     {"Address1":"A house number", 
>     "Address2":"A Street", 
>     "Address3":"A city", 
>     "Address4":"A State", 
>     "Address5":"A Country", 
>     "Postcode":"123456"}, 
>   "city":"A City", 
>   "country":"A Country", 
>   "ddUrl":"http://link1.com", 
>   "ddUrlFromHere":"http://link2.com", 
>   "ddUrlToHere":"http://link3.com", 
>   "lat":54.52909583, 
>   "lng":-0.45554611, 
>   "phoneNumbers": 
>     {"number":"123456789", 
>     "type":"work"}, 
>   "region":"China", 
>   "staticMapUrl":"http://link4.com", 
>   "streetAddress":"A house number, A Street, A city, A State, 
> 123456", 
>   "title":"Ali Baba Carpets", 
>   "titleNoFormatting":"<strong>Ali Baba 
> Carpets</strong>", 
>   "url":"http://link5.com"}]} 

Я пытаюсь разобрать его с помощью:

import java.util.List; 

public class ParseOffers { 
    private List<results> results; 

    public static class cursor { 
     private int currentPageIndex; 
     private int estimatedResultCount; 
     private pages Pages; 
     private String ResponseDetails; 
     private int ResponseStatus; 

     public class pages { 
      private int label; 
      private int start; 
     } 
    } 

    public static class results { 
     private int Accuracy; 
     private addressLines AddressLines; 
     private String city; 
     private String country; 
     private String ddUrl; 
     private String ddUrlFromHere; 
     private String ddUrlToHere; 
     private double lat; 
     private double lng; 
     private phoneNumbers data; 
     private String region; 
     private String staticMapUrl; 
     private String streetAddress; 
     private String title; 
     private String titleNoFormatting; 
     private String url; 

     public class addressLines { 
      private String Address1; 
      private String Address2; 
      private String Address3; 
      private String Address4; 
      private String Address5; 
      private String Postcode; 
     } 

     public class phoneNumbers { 
      private String number; 
      private String type; 
     } 

    } 
} 

Благодарю.

+0

Как вы его разобрали? Рукой или с использованием стандартных библиотек? 'Org.json' пакет в Adroid SDK должен быть в состоянии разобрать этот вид материала: [JavaDoc] (http://developer.android.com/reference/org/json/package-summary.html) –

+0

@Aleks G - Оппонент сказал, что Гсон используется. По-видимому, в режиме привязки данных. –

ответ

1

вопрос просто, что структура данных Java не совпадает с JSON, в нескольких различных способах, в том числе отсутствует поле для курсора, и имеющих имена полей, которые не соответствуют именам элементов в формате JSON.

Вот минимально модифицированный вариант структуры данных Java, который соответствует JSON.

public class ParseOffers 
{ 
    private cursor cursor; 
    private List<results> results; 

    public static class cursor 
    { 
    private int currentPageIndex; 
    private int estimatedResultCount; 
    private pages pages; 
    private String responseDetails; 
    private int responseStatus; 

    public class pages 
    { 
     private int label; 
     private int start; 
    } 
    } 

    public static class results 
    { 
    private int accuracy; 
    private addressLines addressLines; 
    private String city; 
    private String country; 
    private String ddUrl; 
    private String ddUrlFromHere; 
    private String ddUrlToHere; 
    private double lat; 
    private double lng; 
    private phoneNumbers phoneNumbers; 
    private String region; 
    private String staticMapUrl; 
    private String streetAddress; 
    private String title; 
    private String titleNoFormatting; 
    private String url; 

    public class addressLines 
    { 
     private String Address1; 
     private String Address2; 
     private String Address3; 
     private String Address4; 
     private String Address5; 
     private String Postcode; 
    } 

    public class phoneNumbers 
    { 
     private String number; 
     private String type; 
    } 

    } 
} 

Хотя эта структура данных Java работает, у нее все еще есть странности, которые я бы изменил.

Странно, что некоторые из вложенных классов статичны, а некоторые нет. Я бы изменил его, чтобы не было вложенных классов.

Это странно, что некоторые из имен классов точности соответствовать полю (и элемент JSON) имена. Я бы использовал более общие соглашения об именах. Например, я бы изменил имя класса «курсор» на «Курсор».

+0

Приветствия для этого. Как ни странно, для вложенных классов нет реальной причины, я на самом деле являюсь администратором баз данных и написал веб-службу (он использует библиотеку .Net json для ее создания), но третья сторона, которая звонит ей, просила нас отформатируйте его таким образом. –

Смежные вопросы