在 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根据变量名命名键。这对于 user
、pass
和 itemID
没问题,但对于 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.
我正在编写一个 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根据变量名命名键。这对于 user
、pass
和 itemID
没问题,但对于 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.