【问题标题】:Gson deserialize Object with Map insideGson 反序列化带有 Map 的对象
【发布时间】:2014-12-11 12:36:01
【问题描述】:

我有一个简单的 JSON:

{"localization":[{"app.home":"Home","app.menu":"Menu"}]}

我创建了它的 Java 表示:

public class Config {
    @Key("localization")
    private Map<String, String> mLocalization = new HashMap<String, String>();
    public Map<String, String> getLocalization() {
        return mLocalization;
    }

    public void setLocalization(Map<String, String> mLocalization) {
        this.mLocalization = mLocalization;
    }
}

@Key 是因为我在 Robospice 中使用它。 当我尝试解析它时,我收到一个异常:

12-11 15:27:24.104:W/System.err(8133):原因:java.lang.IllegalArgumentException:键本地化,字段私有 java.util.Map com.example.gson.Config.mLocalization 12-11 15:27:24.104:W/System.err(8133):原因:java.lang.IllegalArgumentException:预期的集合或数组类型,但得到了 java.util.Map

那么我该如何解析呢?我不想把它解析成数组然后自己填充Map

【问题讨论】:

    标签: java android json gson deserialization


    【解决方案1】:

    那是因为您的 JSON 中有地图数组而不是地图,应该是:

    {"localization": {"app.home":"Home","app.menu":"Menu"}}
    

    或者你可以将你的键声明为一个映射数组:

    private Map<String, String>[] mLocalization;
    

    【讨论】:

    • 是的,没注意到。
    猜你喜欢
    • 2018-10-25
    • 1970-01-01
    • 2013-09-16
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多