android - GSON 映射键值对

标签 android json gson retrofit2

使用 Retrofit 2 我使用了一个 API,该 API 返回一个具有以下响应的 JSON 对象:

{
  "status": "ok",
  "questions": {
    "1": "What was your childhood nickname?"
  }
}

使用 GSON,我想将其序列化为以下类:

public class SecurityQuestionList {
    public String status;

    public Map<String, String> questions;
}

我已经用我的 Gson 对象注册了一个 TypeAdapter,但问题总是空的。

.registerTypeAdapter(new TypeToken<Map<String, String>>() {}.getType(), new TypeAdapter<Map<String, String>>() {
                    @Override
                    public void write(JsonWriter out, Map<String, String> value) throws IOException {

                    }

                    @Override
                    public Map<String, String> read(JsonReader in) throws IOException {
                        Map<String, String> map = new HashMap<String, String>();
                        try {
                            in.beginArray();
                            while (in.hasNext()) {
                                map.put(in.nextString(), in.nextString());
                            }
                            in.endArray();
                        } catch (IOException ex) {

                        }

                        return map;
                    }
                })

我做错了什么?

最佳答案

在创建 Retrofit 实例时调用 addConverterFactory(GsonConverterFactory.create()) 应该就足够了。

关于android - GSON 映射键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40978159/

相关文章:

json - 如何使用 sapui5 通过 REST 服务发送 json 模型

java - Gson:java.util.Map转换所有键值对

android - React Native- 开发服务器返回 500

android - 如何使用 Java 在 Android Wi-Fi 连接上设置 ProxySettings 和 ProxyProperties?

python - 如何使用 Python 更新 JSON 文件?

java - 从参数周围有 ""的 Json 响应中获取值

java - 如何使用 Gson 仅从 Json 反序列化某些特定字段?

sql - Android多数据库打开

java - 在 pc 上初始化蓝牙连接 android(client) 到 python(server)

javascript - 通过我的 JSON 对象传递附加数据,该数据是从自动完成返回的