在 GSON 中动态设置 JSON 键

Dynamically set JSON key in GSON

我正在编写一个 Android 应用程序,它通过 JSON 发送一些数据。我正在使用 GSON 到 Serialise/Deserialise 我的对象。我已经使用了一些对象,但是一个 endpoint/object 给我带来了麻烦。

该应用程序的功能基本上是多项选择题。用户可以为大约 10 个问题选择 A、B、C 或 D 之一,并且根据选择,还有一个与该选择关联的 long 值。

这是我正在尝试 JSON 的示例 POST:

{
    "user": "abcd1234",
    "pass": "abc123",
    "itemID": 1234,
    "listSelection": [
        ("A", 21),
        ("D", 18),
        ("B", 34),
        ...
    ]
}

所以问题出在 listSelection 对象上。我不控制 API。业主将上述样品寄给我使用。我宁愿以 answer: A, value: 21 的形式拥有它,但所有者想要元组。

我正在尝试在 Java 中创建 class 以使 GSON 创建上述内容以将 POST 发送到 API,但我对这个过程的理解是GSON根据变量名命名键。这对于 userpassitemID 没问题,但对于 listSelection 中的项,其中键是动态的,这不起作用。我不确定是否需要将它放在地图中,或者 GSON 中是否有另一种动态设置密钥的方法。

我在想这样的事情:

public class AnswerSet {

    private String user;
    private String pass;
    private int itemID;
    private List<Answer> listSelection;
}

其中 Answer class 可能是:

public class Answer {

    private String answer;
    private long answerValue;
}

但是这会错误地格式化 JSON

有人可以帮忙吗? 谢谢。

那是无效的 JSON(通过 validator 尝试 运行),所以我不希望 GSON 能够解析它。您将必须实现自己的解析器或将 POST 更改为有效的 JSON.