如何在没有数组括号的情况下将对象添加到列表中

How to add objects to list without having array brackets

提问人:jacob1989 提问时间:8/22/2023 最后编辑:Sergey Tsypanovjacob1989 更新时间:8/22/2023 访问量:51

问:

我有一个 for 循环,我在其中向对象添加一些属性,最后我需要一个字符串(将其作为查询参数传递)

我需要

{"items":[{"itemsCode":"item1","isAvailable":false}],"isActive":false},{"items":[{"entryCode":"item2","isSelected":true}],"isActive":false}

当我尝试时

List<List> itemsList= new ArrayList<>();
itemsList.add(new Items(items, isBoolean));
ObjectMapper mapper = new ObjectMapper();
String itemsJson = mapper.writeValueAsString(itemsList);

POJO公司

public class Items {

    private List<Item> items;
    private Boolean isBoolean;

我明白了:

[{"items":[{"itemsCode":"item1","isAvailable":false}],"isActive":false},{"items":[{"entryCode":"item2","isSelected":true}],"isActive":false}]

请帮助如何摆脱数组括号,但保持将这些对象添加到for循环中的列表中的约定

Java 数组 JSON 对象 ArrayList

评论

0赞 tevemadar 8/22/2023
如果你不想要一个列表,为什么你有一个列表()?反之亦然,如果你需要一个列表,为什么你不想要一个列表?List<List> itemsList= new ArrayList<>();
0赞 jacob1989 8/22/2023
我需要创建两个具有不同值的对象(在一个循环中),它们将其设置为字符串
1赞 tevemadar 8/22/2023
这是一个字符串,如果没有更好的主意,你总是可以有一个.itemsJson = itemsJson.substring(1, itemsJson.length() - 1);
0赞 Jorn 8/22/2023
您尝试生成的内容不是有效的 JSON,因此 JSON 库将无法生成它。如果这确实是您想要的,请考虑将每个序列化为 String,然后用逗号连接它们。然后弄清楚你将如何将该字符串解析回对象。Item
0赞 vsfDawg 8/22/2023
字符串形式是 JSON,数据模型包含 List,因此方括号是正确的。请参见 json.org/json-en.html。如果您的目的是输出一些非JSON形式,那么(我假设这是Jackson类)可能不是一个好的解决方案。ObjectMapper

答:

0赞 Sergey Tsypanov 8/22/2023 #1

[]表示一个数组,因此,如果序列化的顶级对象是,则无法避免拥有它们。 如果你想将顶级项目作为普通对象,你需要重写代码,再添加一个 POJO:List

public class ItemsContainer {
    private List<Items> itemsList;
}

public class Items {
    private List<Item> items;
    private Boolean isBoolean;
}

List<Items> itemsList= new ArrayList<>();
itemsList.add(new Items(items, isBoolean));

ItemContainer container = new ItemContainer();
container.setItemsList(itemsList);

ObjectMapper mapper = new ObjectMapper();
String itemsJson = mapper.writeValueAsString(container);

评论

0赞 jacob1989 8/22/2023
这是个好主意,但它将 ItemContainer 添加到前面 - >{"container":[{"items":[{"itemsCode":"item1","isAvailable":false}],"isActive":false},{"items":[{"entryCode":"item2","isSelected":true}],"isActive":false}]}
0赞 Sergey Tsypanov 8/22/2023
否则,您无法避免,因为您正在序列化[]Collection