首页 > 解决方案 > 使用 Gson 出现 MalformedJsonException 错误

问题描述

我正在尝试将字符串转换为Map<Integer,String>使用代码:

public static <T, R> HashMap<T, R> strMapToHashmap(String strMap) {
    Gson gson = new GsonBuilder().create();
    Type type = new TypeToken<HashMap<T, R>>() {
    }.getType();
    return gson.fromJson(strMap, type);
}

并得到以下错误:

Caused by: com.google.gson.stream.MalformedJsonException: Unexpected value at line 1 column 5 path $.
    at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1568)
    at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:564)
    at com.google.gson.stream.JsonReader.peek(JsonReader.java:425)
    at com.google.gson.internal.bind.ObjectTypeAdapter.read(ObjectTypeAdapter.java:55)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
    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:927)
    at com.google.gson.Gson.fromJson(Gson.java:892) 
    at com.google.gson.Gson.fromJson(Gson.java:841)`

我传递给它的字符串是:

{4=, 1=3:00 pm–4:00 pm, 7=, 6=2:00 am–3:00 am, 5=8:00 am–9:00 am, 3=1:00 am–2:00 am, 2=9:00 am–10:00 am} 

我无法找出它有什么问题。

标签: javaandroidjsondictionarygson

解决方案


您的字符串看起来不像 JSON。尝试通过

{
    "4": "",
    "1": "3:00 pm–4:00 pm",
    "7": "",
    "6": "2:00 am–3:00 am",
    "5": "8:00 am–9:00 am",
    "3": "1:00 am–2:00 am",
    "2": "9:00 am–10:00 am"
}

我不确定它是否是你需要的,但Gson主要用于解析 jsons


推荐阅读