JSON字符串:
{
"flinkJobConfigList": [
{
"displayGroupName": "基础",
"displayGroupList": [
{
"displayName": "类加载模式",
"confName": "classloader.resolve-order",
"confDefaultValue": "parent-first",
"jobConfigurationDesc": "配置类加载模式"
},
{
"displayName": "JM内存",
"confName": "parallelism.default",
"confDefaultValue": "1",
"jobConfigurationDesc": "作业并行度"
},
{
"displayName": "JM内存",
"confName": "jobmanager.memory.process.size",
"confDefaultValue": "1024",
"jobConfigurationDesc": "作业内存"
},
{
"displayName": "TM内存",
"confName": "taskmanager.memory.process.size",
"confDefaultValue": "600",
"jobConfigurationDesc": "作业TM内存"
},
{
"displayName": "TM slot数",
"confName": "taskmanager.numberOfTaskSlots",
"confDefaultValue": "6",
"jobConfigurationDesc": ""
}
]
},
{
"displayGroupName": "状态后端及检查点",
"displayGroupList": [
{
"displayName": "是否开启检查点",
"confName": "checkpoint",
"confDefaultValue": "true",
"jobConfigurationDesc": "检查点"
},
{
"displayName": "频率",
"confName": "execution.checkpointing.interval",
"confDefaultValue": "5",
"jobConfigurationDesc": ""
},
{
"displayName": "状态后端类型",
"confName": "state.backend",
"confDefaultValue": "rocksdb",
"jobConfigurationDesc": ""
}
]
}
]
}
实体对象
public class DisplayGroup {
//展示名
private String displayName;
//配置项名
private String confName;
//配置项默认值
private String confDefaultValue;
//描述
private String jobConfigurationDesc;
public String getDisplayName() {
return displayName;
}
public void setDisplayName(String displayName) {
this.displayName = displayName;
}
public String getConfName() {
return confName;
}
public void setConfName(String confName) {
this.confName = confName;
}
public String getConfDefaultValue() {
return confDefaultValue;
}
public void setConfDefaultValue(String confDefaultValue) {
this.confDefaultValue = confDefaultValue;
}
public String getJobConfigurationDesc() {
return jobConfigurationDesc;
}
public void setJobConfigurationDesc(String jobConfigurationDesc) {
this.jobConfigurationDesc = jobConfigurationDesc;
}
}
import java.util.Collections;
import java.util.List;
public class FlinkJobConfiguration {
//展示分组
private String displayGroupName;
private List<DisplayGroup> displayGroupList = Collections.emptyList();
public String getDisplayGroupName() {
return displayGroupName;
}
public void setDisplayGroupName(String displayGroupName) {
this.displayGroupName = displayGroupName;
}
public List<DisplayGroup> getDisplayGroupList() {
return displayGroupList;
}
public void setDisplayGroupList(List<DisplayGroup> displayGroupList) {
this.displayGroupList = displayGroupList;
}
}
import java.util.ArrayList;
import java.util.List;
public class FlinkJobConfigList {
private List<FlinkJobConfiguration> flinkJobConfigList = new ArrayList<>();
public List<FlinkJobConfiguration> getFlinkJobConfigList() {
return flinkJobConfigList;
}
public void setFlinkJobConfigList(List<FlinkJobConfiguration> flinkJobConfigList) {
this.flinkJobConfigList = flinkJobConfigList;
}
}
@RestController
@RequestMapping("test")
public class TestRest {
@PostMapping("/jsonToObject")
public ResultBean jsonToObject(@RequestBody FlinkJobConfigList flinkJobConfigList) {
FlinkJobConfigList flinkJobConfigListNew = new FlinkJobConfigList();
flinkJobConfigListNew = flinkJobConfigList;
return success(flinkJobConfigListNew);
}
}
测试类-Json字符串转对象
import java.io.IOException;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.midea.bigdata.datamax.flink.model.FlinkJobConfigList;
public class JsonUtil {
public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
// String json = "{\"name\":\"小民\",\"age\":20,\"birthday\":844099200000,\"email\":\"xiaomin@sina.com\"}";
String json = "{\"flinkJobConfigList\":[{\"displayGroupName\":\"基础\",\"displayGroupList\":[{\"displayName\":\"类加载模式\",\"confName\":\"classloader.resolve-order\",\"confDefaultValue\":\"parent-first\",\"jobConfigurationDesc\":\"配置类加载模式\"},{\"displayName\":\"JM内存\",\"confName\":\"parallelism.default\",\"confDefaultValue\":\"1\",\"jobConfigurationDesc\":\"作业并行度\"},{\"displayName\":\"JM内存\",\"confName\":\"jobmanager.memory.process.size\",\"confDefaultValue\":\"1024\",\"jobConfigurationDesc\":\"作业内存\"},{\"displayName\":\"TM内存\",\"confName\":\"taskmanager.memory.process.size\",\"confDefaultValue\":\"600\",\"jobConfigurationDesc\":\"作业TM内存\"},{\"displayName\":\"TM slot数\",\"confName\":\"taskmanager.numberOfTaskSlots\",\"confDefaultValue\":\"6\",\"jobConfigurationDesc\":\"\"}]},{\"displayGroupName\":\"状态后端及检查点\",\"displayGroupList\":[{\"displayName\":\"是否开启检查点\",\"confName\":\"checkpoint\",\"confDefaultValue\":\"true\",\"jobConfigurationDesc\":\"检查点\"},{\"displayName\":\"频率\",\"confName\":\"execution.checkpointing.interval\",\"confDefaultValue\":\"5\",\"jobConfigurationDesc\":\"\"},{\"displayName\":\"状态后端类型\",\"confName\":\"state.backend\",\"confDefaultValue\":\"rocksdb\",\"jobConfigurationDesc\":\"\"}]}]}";
/**
* ObjectMapper支持从byte[]、File、InputStream、字符串等数据的JSON反序列化。
*/
ObjectMapper mapper = new ObjectMapper();
FlinkJobConfigList user = mapper.readValue(json, FlinkJobConfigList.class);
System.out.println(user);
}
}