2015-07-15 6 views
5
public interface UserService { 
    @POST(Constants.Api.URL_REGISTRATION) 
    @FormUrlEncoded 
    BaseWrapper registerUser(@Field("first_name") String firstname, @Field("last_name") String lastname, @Field("regNumber") String phone, @Field("regRole") int role); 


public BaseWrapper registerUser(User user) { 
     return getUserService().registerUser(user.getFirstName(), user.getLastName(), user.getPhone(), user.getRole()); 
    } 

Questo creano Eccezione

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $ 

Un grande grazie per l'aiuto.

+1

invia il tuo messaggio .. – NaveenBharadwaj

+0

il tuo json è sbagliato, correggilo. – Karthik

risposta

16

Diamo un'occhiata all'errore che si sta ricevendo.

BEGIN_OBJECT Previsto

tuo JSON è un oggetto, e tutti gli oggetti JSON sono racchiusi tra parentesi graffe ({}). BEGIN_OBJECT è quindi {. E lo sta aspettando da qualche parte.

ma era STRING

Ma invece ha trovato una stringa "Qualcosa". Ancora non ci dice dove.

at line 1 colonna 1 percorso $

Ah, perfetto. Alla riga 1 colonna 1. Qual è l'inizio del JSON. Quindi hai dimenticato di racchiudere il tutto in {} (o almeno hai dimenticato il primo, ma scommetto che li hai dimenticati entrambi).

+3

Nota che JSON potrebbe anche essere racchiuso tra parentesi quadre ([]), se si tratta di un array – SnyersK

+1

Ottima spiegazione con una buona formattazione. +1 a te. – OO7

+0

@ OO7 @SnyersK @Astrogat Come posso evitare di crashare la mia app - Ottengo questo errore quando provo a formattare la risposta errorBody dell'API (quando ho sbagliato la richiesta per es. 25 volte in 10 sec) ... I've got catch (IOException | IllegalStateException e) 'ma non aiuta ... – y07k2