我遇到了Jackson的问题,我需要找到一种方法让以下对象正确序列化以支持swagger文档。
public Class Foo{
@XStreamImplicit
List<Bar> bars;
}
使用XStream序列化时,它看起来像:
<Foo>
<Bar>b1</Bar>
<Bar>b2</Bar>
</Foo>
我们希望在JSON中有类似的显示,但我不知道这是否可能,因为JSON我认为它基本上是K,V地图。
{
"bar":"b1",
"bar":"b2"
}
对这些要点的澄清将非常有帮助!
编辑:
看起来问题在于招摇,添加数组表示法仍然不允许为不同的响应代码填充响应模型。我们认为注释没有处理集合存在问题。
答案 0 :(得分:1)
这不是地图而是数组。在JSON中,您不能拥有多个具有相同名称的键。 JSON等价物将如下所示:
{
"bar": [ "b1", "b2" ]
}
答案 1 :(得分:0)
这是一个类,它将向您展示使用arraylist作为标准输出(如Ron所示)或将其展开以通过@JsonValue将列表展平为对象数组之间的JSON输出差异
public class Answer28482248 {
public static class JsonArrayStandard
{
ArrayList<String> myList;
public JsonArrayStandard()
{
myList = new ArrayList<String>();
myList.add("a");
myList.add("b");
}
public ArrayList<String> getMyList()
{
return myList;
}
}
public static class JsonArrayAsValue extends JsonArrayStandard
{
public JsonArrayAsValue()
{
super();
}
@JsonValue
public ArrayList<String> getMyList()
{
return myList;
}
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
try{
JsonArrayStandard standard = new JsonArrayStandard();
JsonArrayStandard asValue = new JsonArrayAsValue();
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(standard));
System.out.println(mapper.writeValueAsString(asValue));
}
catch (Exception e)
{
System.out.println("Something went wrong");
}
}
}
输出结果为:
{ “myList中”:[ “一”, “B”]}
[ “一”, “B”]