【发布时间】:2015-07-06 21:32:42
【问题描述】:
我正在编写一个Android 应用程序,它通过 JSON 发送一些数据。我正在使用GSON 来序列化/反序列化我的对象。我已经使用了一些对象,但是一个端点/对象给我带来了麻烦。
应用程序的功能基本上是多项选择题。用户可以为大约 10 个问题选择 A、B、C 或 D 之一,并且根据选择,还有一个与此选择相关联的 long 值。
这是我尝试发布的 JSON 示例:
{
"user": "abcd1234",
"pass": "abc123",
"itemID": 1234,
"listSelection": [
("A", 21),
("D", 18),
("B", 34),
...
]
}
所以问题出在listSelection 对象上。我不控制 API。业主将上述样品寄给我使用。我宁愿以answer: A, value: 21 的形式拥有它,但所有者想要元组。
我正在尝试在 Java 中创建类以使 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 类可能在哪里:
public class Answer {
private String answer;
private long answerValue;
}
但这会错误地格式化JSON。
有人可以帮忙吗? 谢谢。
【问题讨论】:
-
为什么你建议的最后一件事格式不正确?
-
它将以
"answer": "A", "answerValue": 21而不是"A" : 21的形式形成 -
我想你需要为 Answer 实现自定义序列化程序,看看stackoverflow.com/questions/6856937/…
-
这些对必须以相同的名称引用。我认为不可能有你所说的。之后怎么反序列化?
-
你确定你的答案被
()包围而不是{}吗?