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);
}
}