gpt4 book ai didi

java - 具有不同名称的Spring json map元素要列出

转载 作者:行者123 更新时间:2023-11-29 04:09:22 25 4
gpt4 key购买 nike

我使用 spring boot 2.1.4,我的问题是 json 映射到对象。是否可以这样映射json

{
"name":"test",
"list1":1,
"list2":2,
"list3":3,
"list4":4,
"list5":5,
"list6":6,
"list7":7
}

这样反对:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Test {

private String name;
private List<Integer> list;

}

在我的 spring boot Controller 中它看起来像这样:

@GetMapping("/criteria")
public String registration(@RequestBody Test test) {
return "";
}

是否可以通过某种方式将此 json 映射到我的自定义对象?

最佳答案

您可以为对象创建自定义反序列化器,如下所示。

@JsonDeserialize(using = CustomDeserializer::class)
data class MyCustomObject(
var name: String,
var list: List<Int>
)

class CustomDeserializer: JsonDeserializer<MyCustomObject>(){
override fun deserialize(p: JsonParser, ctxt: DeserializationContext): MyCustomObject {
var myList = ArrayList<Int>()
var myName = ""
while(p.nextToken() != JsonToken.END_OBJECT){
if(p.currentName() == "name"){
myName = p.nextTextValue()
}
if(p.currentName().contains("list")){
myList.add(p.nextIntValue(0))
}
}

return MyCustomObject(myName, myList)
}
}

这是用 Kotlin 编写的,如果您需要我帮助将其转换为 Java,请告诉我。

编辑 继续为您将其转换为 Java。请原谅任何打字错误:) 如果您有任何疑问或问题,请告诉我

@JsonDeserialize(using = CustomDeserializer.class)
public class MyCustomObjectAgain {
private String name;
private List<Integer> myList;

public MyCustomObjectAgain(String name, List<Integer> myList) {
this.name = name;
this.myList = myList;
}

private class CustomDeserializer extends JsonDeserializer<MyCustomObject>{
@Override
public MyCustomObject deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
List<Integer> myList = new ArrayList();
String myName = "";
while(p.nextToken() != JsonToken.END_OBJECT){
if(p.currentName() == "name"){
myName = p.nextTextValue();
}
if(p.currentName().contains("list")){
myList.add(p.nextIntValue(0));
}
}

return new MyCustomObject(myName, myList);
}
}
}

关于java - 具有不同名称的Spring json map元素要列出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56011446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com