就像我之前有很多人一样,我需要制作一个键,值对的“表”。可能有多个,我不需要排序。配对列表似乎是一个不错的选择,但现在我无法让GSon为包含它们的类正确创建JSON。
我可以寻找其他方式,但是现在我的好奇心激起了。
获取List<Pair<String, String>>
的JSON没什么问题
@Test
void listOfPairs() {
List<Pair<String, String>> pairs = new ArrayList<>();
pairs.add(new ImmutablePair<>("Test1", "Has Value1"));
pairs.add(new ImmutablePair<>("Test1", "Has Value2"));
pairs.add(new ImmutablePair<>("Test2", "Has Value2"));
String json = new GsonBuilder().setPrettyPrinting().create().toJson(pairs);
System.out.println(json);
}
运行此“测试”可提供一个漂亮的JSON对象:
[
{
"left": "Test1",
"right": "Has Value1"
},
{
"left": "Test1",
"right": "Has Value2"
},
{
"left": "Test2",
"right": "Has Value2"
}
]
但是当List<Pair<String, String>>
是一个类的成员时,它不是很多。
class Thing {
private List<Pair<String, String>> pairs = new ArrayList<>();
private String thingName = "Benjamin Jacob Grimm";
Thing() {
pairs.add(new ImmutablePair<>("One", "1"));
pairs.add(new MutablePair<>("Two", "1"));
pairs.add(new ImmutablePair<>("Two", "2"));
}
}
@Test
void thingTest() {
Thing thing = new Thing();
String json = new GsonBuilder().setPrettyPrinting().create().toJson(thing);
System.out.println(json);
}
现在,响应完全没有问题了! :
{
"pairs": [
{},
{},
{}
],
"thingName": "Benjamin Jacob Grimm"
}
同样,我可以寻找另一种存储机制,但是我很好奇这里出了什么问题。有人有什么想法吗?
答案 0 :(得分:1)
尝试为TypeToken
提供toJson
,例如:
Type type = new TypeToken<Pair<String, String>>() {}.getType();
String json = new GsonBuilder().setPrettyPrinting().create().toJson(pairs, type);
System.out.println(json);
没有测试:)