JsonSyntaxException

0

WItam ! Mam pytanie. Czemu pokazuje mi się taki błąd:

08-30 12:14:51.978 23634-23634/bjd.adrian.gson E/AndroidRuntime: FATAL EXCEPTION: main
    Process: bjd.adrian.gson, PID: 23634
    com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
        at com.google.gson.Gson.fromJson(Gson.java:939)
        at com.google.gson.Gson.fromJson(Gson.java:892)
        at com.google.gson.Gson.fromJson(Gson.java:841)
        at com.google.gson.Gson.fromJson(Gson.java:813)
        at bjd.adrian.gson.MainActivity$1.onResponse(MainActivity.java:53)
        at bjd.adrian.gson.MainActivity$1.onResponse(MainActivity.java:46)
        at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:83)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106)
        at android.os.Handler.handleCallback(Handler.java:751)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6682)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
     Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
        at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:350)
        at com.google.gson.internal.bind.ArrayTypeAdapter.read(ArrayTypeAdapter.java:70)
        at com.google.gson.Gson.fromJson(Gson.java:927)
        at com.google.gson.Gson.fromJson(Gson.java:892) 
        at com.google.gson.Gson.fromJson(Gson.java:841) 
        at com.google.gson.Gson.fromJson(Gson.java:813) 
        at bjd.adrian.gson.MainActivity$1.onResponse(MainActivity.java:53) 
        at bjd.adrian.gson.MainActivity$1.onResponse(MainActivity.java:46) 
        at com.android.volley.toolbox.JsonRequest.deliverResponse(JsonRequest.java:83) 
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:106) 
        at android.os.Handler.handleCallback(Handler.java:751) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6682) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 

Z tego co rozumiem to jest błąd JSON-a, ale według mnie jest z nim wszystko dobrze

JSON:

{
	"names": [{
		"nazwa": "Rower"
	}, {
		"nazwa": "Rower mtb"
	}, {
		"nazwa": "rower"
	}]
}
1

JSON jest dobry natomiast Twój obiekt, do którego chcesz zserializować tego JSONa nie odpowiada jego formatowi. Expected BEGIN_ARRAY but was BEGIN_OBJECT oznacza, że GSON oczekiwał, że gdzieś będzie tablica a dostał obiekt.

0

Dzięki za pomoc !

1

Klasy generuj tutaj: http://www.jsonschema2pojo.org/ wklejasz tam twojego jsona i dostajesz kod w javie. W ten sposób unikniesz takich pomyłek.

1 użytkowników online, w tym zalogowanych: 0, gości: 1