2015-07-15 10 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()); 
    } 

bu istisna yardım

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

Büyük sayesinde oluşturun.

+1

jsonunuzu gönderin .. – NaveenBharadwaj

+0

json'unuz yanlış, düzeltin. – Karthik

cevap

16

Şimdi aldığınız hatayı inceleyelim.

Beklenen BEGIN_OBJECT

JSON bir nesnedir ve tüm JSON nesneleri küme parantezi içine alınır ({}). BEGIN_OBJECT bu nedenle {. Ve bunu bir yerde bekliyor.

ama

STRING

oldu Ama bunun yerine o bir dize "Something" bulundu. Hala bize nerede olduğunu söylemiyor. 1. satırda sütun 1 yolu ile

$

Ah mükemmel. 1. satırda 1. sütun. JSON'un başlangıcı. Yani tüm şeyi {} 'de (ya da en azından birincisini unuttun, ama bahse girerim ikisini de unutmuştun).

+3

JSON'un, köşeli parantezler ([]) içine de eklenebileceğini unutmayın, eğer bu bir dizi ise – SnyersK

+1

Güzel biçimlendirmeyle mükemmel açıklama. + 1 sana. – OO7

+0

@ OO7 @SnyersK @Astrogat Uygulamamı kilitlemekten nasıl kaçınabilirim - API errorBody yanıtını biçimlendirmeye çalışırken bu hatayı alıyorum (örneğin 10 saniyeliğine 25 kez yanlış istekte bulunduğumda) ... Yakalamam var (IOException | IllegalStateException e) 'ama yardımcı değil ... – y07k2

İlgili konular