杰克逊等同于 XStreamImplicit
Jackson equivalent to XStreamImplicit
我在使用 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"
}
澄清任何一点都会非常有帮助!
编辑:
看起来问题出在 swagger 上,添加数组符号仍然不允许为不同的响应代码填充响应模型。我们认为注释不处理集合存在问题。
那不是地图而是数组。在 JSON 中,不能有多个同名键。 JSON 等效项如下所示:
{
"bar": [ "b1", "b2" ]
}
这里有一个 class,它将向您展示使用 arraylist 作为标准输出(如 Ron 所示)或将其展开以将列表展平为对象数组之间的 JSON 输出差异@JsonValue
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":["a","b"]}
["a","b"]
我在使用 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"
}
澄清任何一点都会非常有帮助!
编辑:
看起来问题出在 swagger 上,添加数组符号仍然不允许为不同的响应代码填充响应模型。我们认为注释不处理集合存在问题。
那不是地图而是数组。在 JSON 中,不能有多个同名键。 JSON 等效项如下所示:
{
"bar": [ "b1", "b2" ]
}
这里有一个 class,它将向您展示使用 arraylist 作为标准输出(如 Ron 所示)或将其展开以将列表展平为对象数组之间的 JSON 输出差异@JsonValue
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":["a","b"]}
["a","b"]