gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column

‮ttual.www‬uri.com
gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column

Error Message

Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 3 path $[0]
	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:88)
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 3 path $[0]
	at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:358)
	at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:171)
	at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:144)
	at com.google.gson.Gson.fromJson(Gson.java:1214)
	... 4 more

Error Code

/**
 * @author lautturi.com 
 * Java example: json to hashmap in java
 */

public class Lautturi {
	public static void main(String[] args) {
		String jsonString = "[{\"id\":111,\"name\":\"Lautturi\"}]";
				
		Map<String, String> retMap = new Gson().fromJson(
			    jsonString, new TypeToken<HashMap<String, String>>() {}.getType()
			);
		System.out.println(retMap);
	}
}

Cause

gson.JsonSyntaxException

check the json string.

Solution

change

String jsonString = "[{\"id\":111,\"name\":\"Lautturi\"}]";

to

String jsonString = "{\"id\":111,\"name\":\"Lautturi\"}";

Fixed code

/**
 * @author lautturi.com 
 * Java example: parse 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 = "{\"id\":111,\"name\":\"Lautturi\"}";			
		Map<String, String> retMap = new Gson().fromJson(
			    jsonString, new TypeToken<HashMap<String, String>>() {}.getType()
			);
		System.out.println(retMap);
	}
}
Created Time:2017-10-03 12:08:50  Author:lautturi