Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 15 path $. at com.google.gson.Gson.fromJson(Gson.java:1226) at com.google.gson.Gson.fromJson(Gson.java:1124) at com.google.gson.Gson.fromJson(Gson.java:1034) at com.google.gson.Gson.fromJson(Gson.java:1001) at hello.Lautturi.main(Lautturi.java:85) Caused by: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 1 column 15 path $. at com.google.gson.stream.JsonReader.nextString(JsonReader.java:834) at com.google.gson.internal.bind.TypeAdapters$15.read(TypeAdapters.java:421) at com.google.gson.internal.bind.TypeAdapters$15.read(TypeAdapters.java:409) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40) at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:186) at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:144) at com.google.gson.Gson.fromJson(Gson.java:1214)
/** * @author lautturi.com * Java example: parsing json string to hashmap in java */ public class Lautturi { public static void main(String[] args) { String jsonString = "{\"employees\":[{\"id\":111,\"name\":\"Lautturi\"}, {\"id\":112,\"name\":\"James\"}]}"; Map<String, String> retMap = new Gson().fromJson( jsonString, new TypeToken<HashMap<String, String>>() {}.getType() ); System.out.println(retMap); } }
JsonSyntaxException Caused by: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY
check the json string.
change
Map<String, String> retMap = new Gson().fromJson( jsonString, new TypeToken<HashMap<String, String>>() {}.getType() );
to
Map<String, Object> retMap = new Gson().fromJson( jsonString, new TypeToken<HashMap<String, Object>>() {}.getType() );
the employees value is an object but not string.
/** * @author lautturi.com * Java example: convert json string to hashmap in java */ import java.util.*; import org.json.JSONObject; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public class Lautturi { public static void main(String[] args) { String jsonString = "{\"employees\":[{\"id\":111,\"name\":\"Lautturi\"}, {\"id\":112,\"name\":\"James\"}]}"; Map<String, Object> retMap = new Gson().fromJson( jsonString, new TypeToken<HashMap<String, Object>>() {}.getType() ); System.out.println(retMap); } }