我想使用GSON将对象转换为json字符串。 json string是
"type": "both", "value": ["numbercodes", [1, 2, 3]]
正如你所看到的那样"价值"是String的列表,后跟整数数组,所以如何表示字符串和数字的异质性列表
以下代码无法工作:
class X
{
String type;
List<List<String>> value;
}
或者即使以下代码也无效:
class Value
{
String x1;
List<Integer> x2;
}
class X
{
String type;
Value value;
}
和
Gson gson = new Gson();
X x = new X();
String jsonString = gson.toString(x);
但是jsonString的值不会像预期的那样。
&#34;输入&#34;:&#34;两者&#34;,&#34;值&#34;:[&#34;数字代码&#34;,[1,2,3]]
那我该如何定义我的课程&#34; X&#34;这样我就得到了json字符串。
答案 0 :(得分:1)
最好的解决方案是重构数据模型。始终将代码清晰地写给其他开发人员,以便他们能够理解模型所代表的内容。它应该像下面的例子:
{
"type": "both",
"someKey": "numbercodes",
"arrayOfIntegers": [1, 2, 3]
}
然后你的实体类就是:
class Entity {
String type;
String someKey;
List<Integer> arrayOfIntegers;
}
当前模型并没有真正说出“数字编码”和整数数组。有很多方法可以改变它,我刚刚提出了一个。
修改强>
如果您真的想继续使用当前模型,那应该只是:
class Entity {
String type;
List<Object> value = new ArrayList<>();
...
public void addValue(Object valueToAdd){
value.add(valueToAdd);
}
}
...
Entity entity = new Entity();
entity.setType("both");
entity.addValue("numbercodes");
entity.addValue(Arrays.asList(1,2,3));