java - 在GSON中动态设置JSON key

标签 java gson

我正在编写一个通过 JSON 发送一些数据的 Android 应用程序。我正在使用 GSON 来序列化/反序列化我的对象。我已经可以使用一些对象来进行此操作,但是一个端点/对象给我带来了麻烦。

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

这是我尝试 POST 的 JSON 示例:

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

所以问题出在 listSelection 对象上。我不控制API。店主把上面的 sample 发给我使用。我宁愿采用 answer: A, value: 21 的形式,但所有者想要元组。

我试图在Java中创建类,以使GSON创建上述内容以通过POST发送到API,但我对此过程的理解是GSON根据变量名命名键。这对于 userpassitemID 来说很好,但对于 listSelection 中 key 是动态的项目,这不起作用。我不确定是否需要将其放入 map 中,或者 GSON 中是否有另一种方法可以动态设置 key 。

我在想这样的事情:

public class AnswerSet {

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

Answer 类可能位于:

public class Answer {

    private String answer;
    private long answerValue;
}

但这会错误地格式化 JSON

有人可以帮忙吗? 谢谢。

最佳答案

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

关于java - 在GSON中动态设置JSON key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31256014/

相关文章:

java - java中的序列化

java - Hibernate更新突然不起作用

java - 可以缓存对 javax.persistence.EntityManager 的引用吗?

java - 是否可以使用 GSON 将带有句点的 JSON 属性名称反序列化为嵌套对象?

java - 将数据索引到 Elasticsearch 时出现格式错误的日期错误

java - 应为 BEGIN_OBJECT,但在 Gson 中为 STRING

java - 如何使用 GSON 从 json 树获取 json 值

java - 如何使用 AtomicBoolean 实现这一点?

android - 如何处理包含 = 和 : characters in json value in Android 的 JSON 数据

java - AspectJ - 接口(interface)实现方法的切入点