我有一个Sping Boot 记录集,其中包含几个包含相同值的字段。我将在HTTP响应对象中以JSON的形式返回此数据。每行中的公共字段(记录的前X个字段)应该是唯一的,然后其他字段应该作为数组返回。在此之前,先有先有后。
我目前拥有的:
{
"Field1":"Foo",
"Field2":"Bar",
"Field3":"Fizz",
"Field4":"Buzz",
"Field5":"John",
"Field6":"Smith",
"Field7":"24",
"Field8":"Ohio"
}
{
"Field1":"Foo",
"Field2":"Bar",
"Field3":"Fizz",
"Field4":"Buzz",
"Field5":"Michael",
"Field6":"Jackson",
"Field7":"38",
"Field8":"California"
}
{
"Field1":"Foo",
"Field2":"Bar",
"Field3":"Fizz",
"Field4":"Buzz",
"Field5":"Tim",
"Field6":"Burton",
"Field7":"45",
"Field8":"New York"
}
我想把这个数据信息:
{
"Field1":"Foo",
"Field2":"Bar",
"Field3":"Fizz",
"Field4":"Buzz",
[
{"Field5":"John","Field6":"Smith","Field7":"24","Field8":"Ohio"},
{"Field5":"Michael","Field6":"Jackson","Field7":"38","Field8":"California"},
{"Field5":"Tim","Field6":"Burton","Field7":"45","Field8":"New York"}
]
}
有没有什么神奇的java指令或注解可以做到这一点?我对这门语言很陌生,我已经对它有这么多非常有用的内置程序感到惊讶,所以我希望魔术帽里还有另一只兔子。当然,我可以手动编写逻辑来完成这项工作,但如果存在这样一种机制,我相信它的性能将远远超过我所能编写的任何东西。
感谢您的帮助!
1条答案
按热度按时间nwo49xxi1#
没有现成的解决方案,但是,您可以从流API和java 16记录中受益。顺便说一句,记录甚至可以在任何方法实现中本地定义。
有了这样一个Map,你可以验证是否有单个条目,然后从它构建一个目标自定义对象(也可以是一个记录),或者构建一个
JsonNode
。Target对象和JsonNode可以手动序列化或传递到Spring框架,通常会发生默认序列化。