java—将多个列表背靠背写入单个JsonArray的最佳方法
我的问题是,将多个列表背靠背转换为单个JsonArray的最佳方式是什么。列表正在进行中,因此我不想或不能将所有列表(list1-listn)合并到一个大列表中,然后使用Jackson将合并后的列表写入JsonArray 皈依java—将多个列表背靠背写入单个JsonArray的最佳方法,java,json,jackson,Java,Json,Jackson,我的问题是,将多个列表背靠背转换为单个JsonArray的最佳方式是什么。列表正在进行中,因此我不想或不能将所有列表(list1-listn)合并到一个大列表中,然后使用Jackson将合并后的列表写入JsonArray 皈依 ArrayList<Event> list1 = new ArrayList<Event>(); list1.add(new Event("a1","a2")); list1.add(new Event("b1","b2"));
ArrayList<Event> list1 = new ArrayList<Event>();
list1.add(new Event("a1","a2"));
list1.add(new Event("b1","b2"));
ArrayList<Event> list2 = new ArrayList<Event>();
list2.add(new Event("c1","c2"));
list2.add(new Event("d1","d2"));
......
......listn
我不知道
Jackson
,但看看API
我会这样做:
WriterBasedJsonGenerator
(或您使用的任何JsonGenerator
)实现,稍微修改一下行为:generator.writeRaw (',');
在最后一张名单之后呢
generator.writeRaw (']');
在一天结束时,我发现在Jackson中没有这样的方式允许你直接将两个列表背靠背地写进JsonArray。您可以使用自己的实现WriteStarray()writeEndArray()实现JsonGenerator,或者更简单一些,您可以定义startArray和endArray,然后自己构造jsonArray
private static final String JSON_ARRAY_START = "[" + LINE_BREAK;
private static final String JSON_ARRAY_COMMA = "," + LINE_BREAK;
private static final String JSON_ARRAY_END = LINE_BREAK+ "]";
因此,代码大致如下所示:
write(JSON_ARRAY_START)
foreach list1
use objectMapper write every Event object
write(JSON_ARRAY_COMMA)
foreach list2
use objectMapper write every Event object
if it's not the last element in the list, write(JSON_ARRAY_COMMA)
write(JSON_ARRAY_END)
我试图理解这个问题:你有多个列表,在哪里?在课堂上?假设您成功地将所有列表(1,2..n)转换为Gson/Jackson字符串。现在您想将其转换回数组列表,是吗?让我在这里提供更多的背景信息,我以批处理模式查询底层数据库,所以让我们假设一次10条记录。他们以10项记录的列表形式回来。然后我们将我的API作为返回流(outputstream)处理单个jsonArray。所有这些都是因为结果集可能非常大,我们不希望任何地方出现内存不足问题。
generator.writeRaw (']');
private static final String JSON_ARRAY_START = "[" + LINE_BREAK;
private static final String JSON_ARRAY_COMMA = "," + LINE_BREAK;
private static final String JSON_ARRAY_END = LINE_BREAK+ "]";
write(JSON_ARRAY_START)
foreach list1
use objectMapper write every Event object
write(JSON_ARRAY_COMMA)
foreach list2
use objectMapper write every Event object
if it's not the last element in the list, write(JSON_ARRAY_COMMA)
write(JSON_ARRAY_END)