如何使用jackson在java中创建json响应的pojo文件



这是我从API得到的json响应。

{
"job_1": {
"metaData": {},
"extractedData": {
"score_a": [1,2,3,4],
"score_b": [40,40,72,136],
"score_c": [3,3.5,3,2,3,9],
"score_d": [1659752409254420,1659752416354536,1659752424695028,1659752431823242 ]
}
}
}

作为响应,job_1可以变化。可能是job3或job4。

如何为此响应创建pojo文件?

提前谢谢。

我修改了请求,使每个作业在请求主体中未标记,被视为列表中的对象

请求如下:

{
"jobs":[
{
"metaData": {},
"extractedData": {
"score_a": [
1,
2,
3,
4
],
"score_b": [
40,
40,
72,
136
],
"score_c": [
3,
3.5,
3,
2,
3,
9
],
"score_d": [
1659752409254420,
1659752416354536,
1659752424695028,
1659752431823242
]
}
},
{
"metaData": {},
"extractedData": {
"score_a": [
1,
2,
3,
4
],
"score_b": [
40,
40,
72,
136
],
"score_c": [
3,
3.5,
3,
2,
3,
9
],
"score_d": [
1659752409254420,
1659752416354536,
1659752424695028,
1659752431823242
]
}
}
]
}

通过向元数据添加注释@JsonSerialize,可以显示不包含元素的对象

public class response {
List<job> jobs;
public static class job {
MetaData metaData;
ExtractedData extractedData;
@JsonSerialize
public static class MetaData {
//insert code
}
public static class ExtractedData {
List<Integer> score_a;
List<Integer> score_b;
List<Integer> score_c;
List<Long> score_d;
}
}
}

我试过像这个

@Controller
public class test {
@RequestMapping(value = "/test", method = RequestMethod.POST,consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<response> testPost(@RequestBody response res) {
return ResponseEntity.ok(res);
}
}

使用HashMap处理动态键job_1可能会有所不同。也许是job3或者job4。

public class response {
HashMap<String, job> jobs;
public static class job {
MetaData metaData;
ExtractedData extractedData;
@JsonSerialize
public static class MetaData {
//insert code
}
public static class ExtractedData {
List<Integer> score_a;
List<Integer> score_b;
List<Integer> score_c;
List<Long> score_d;
}
}
}

最新更新