J'essaye d'analyser json en java.Objet JSON String to Java utilisant GSON
J'ai la chaîne suivante qui est JSON valide selon jsonlint.com
private final static String LOC_JSON =
"["
+"{"
+" \"lat1\": 39.737567,"
+" \"lat2\": 32.7801399,"
+" \"long1\": -104.98471790000002,"
+" \"long2\": -96.80045109999998"
+"},"
+" ["
+" {"
+" \"lat\": {"
+" \"b\": 38.88368709500021,"
+" \"d\": 40.620468491667026"
+" },"
+" \"long\": {"
+" \"b\": -105.75306170749764,"
+" \"d\": -104.675854661387"
+" }"
+" }"
+" ]"
+"]";
Je suis en train de l'analyser dans un objet et je reçois l'erreur suivante. "BEGIN_OBJECT EXPECTED était BEGIN_ARRAY à la ligne 1 colonne 2"
Gson gson = new Gson();
BoxSearch b = gson.fromJson(LOC_JSON, BoxSearch.class);
BoxSearch se compose de cela.
private Number lat1;
private Number lat2;
private Number long1;
private Number long2;
private Boxes[] boxes;
Les boîtes sont un objet Latitude et un objet Longitude qui sont tous deux définis comme identiques.
private String b;
private String d;
je peux analyser les attributs de niveau supérieur (lat1, lat2, long1 et LONG2) dans un objet BoxSearch plus simple qui ne dispose que ces 4 attributs. Le problème vient quand le json et l'objet sont plus complexes. Est-il même possible de faire ce que j'essaie?
J'espère avoir fourni suffisamment d'informations pour obtenir de l'aide. Je serais heureux de fournir plus d'informations ou même un projet de test si nécessaire. Je cours cela comme un test de junit.
Merci.
duplication possible de [lancer GSON "BEGIN \ _OBJECT attendu mais BEGIN \ _ARRAY"?] (Http://stackoverflow.com/questions/9598707/gson-throwing-expected-begin-object-but-was-begin -array) - votre JSON est un tableau, pas un objet. Vous allez avoir un problème parce que c'est un tableau contenant différents types d'objets (un objet et un tableau) que vous ne pouvez pas traiter sans écrire un désérialiseur personnalisé –
@BrianRoach cela ressemble plus à une réponse;) –
@RC. Ouais ... Hmm. Je pense que peut-être je vais le déplacer, le vieux Q répond pourquoi il obtient l'erreur, mais la résolution de son cas est différente –