2016-07-04 5 views
0

Я хочу использовать gson Google для разбора из теста JSon на карту, вот мой код, но получает исключение:Java использует gson для разбора из JSon формата для отображения проблем

Gson gson = new GsonBuilder().serializeNulls().setLenient().setPrettyPrinting().create(); 
Map<String, List<String>> map = new LinkedHashMap<>(); 
map = gson.fromJson("The json text", new TypeToken<Map<String, List<String>>>(){}.getType()); 

Текст JSON является:

{ 
    "Worker": { 
     "127.0.0.1:9001", 
     "127.0.0.1:9002", 
     "127.0.0.1:9003", 
     "127.0.0.1:9004", 
     "127.0.0.1:9005", 
     "127.0.0.1:9006", 
     "127.0.0.1:9007" 
    } 
} 

сообщение об ошибке:

Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 2 column 16 path $. 
     at com.google.gson.Gson.fromJson(Gson.java:891) 
     at com.google.gson.Gson.fromJson(Gson.java:844) 
     at com.google.gson.Gson.fromJson(Gson.java:793) 
     at TestBasic.TestBasic.main(TestBasic.java:140) 
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 2 column 16 path $. 
     at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:351) 
     at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:80) 
     at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61) 
     at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40) 
     at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:187) 
     at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145) 
     at com.google.gson.Gson.fromJson(Gson.java:879) 
     ... 3 more 

ответ

3

Ваш текст JSON является недействительным. Строковые маркеры внутри Работник должен быть заключен с JSon массив []

"Worker": [ 
    "127.0.0.1:9001", 
    "127.0.0.1:9002", 
    "127.0.0.1:9003", 
    "127.0.0.1:9004", 
    "127.0.0.1:9005", 
    "127.0.0.1:9006", 
    "127.0.0.1:9007" 
] 
+0

Он работает после того, как я изменил текст, спасибо! –