未从内部类的json请求填充Java对象
已经在不同的网站上搜索过,但找不到正确的答案,因此发布此请求,尽管可能重复。对此表示抱歉 我将下面的json请求发送到我的后端服务,并转换为java对象进行处理。我可以看到传递给我的服务的请求主体,但当我从json转换为java对象时,值不会填充未从内部类的json请求填充Java对象,java,json,Java,Json,已经在不同的网站上搜索过,但找不到正确的答案,因此发布此请求,尽管可能重复。对此表示抱歉 我将下面的json请求发送到我的后端服务,并转换为java对象进行处理。我可以看到传递给我的服务的请求主体,但当我从json转换为java对象时,值不会填充 { "data":{ "username":"martin", "customerId":1234567890, "firstName":"john", "lastName":"smith", "password":"p
{
"data":{
"username":"martin",
"customerId":1234567890,
"firstName":"john",
"lastName":"smith",
"password":"p@ssrr0rd@#12",
"email":"john.smith@gmail.com",
"contactNumber":"0342323443",
"department":"sports",
"location":"texas",
"status":"unlocked",
"OrderConfigs":[
{
"vpnId":"N4234554R",
"serviceId":"connectNow",
"serviceType":"WRLIP",
"ipAddress":"10.101.10.3",
"fRoute":[
"10.255.253.0/30",
" 10.255.254.0/30"
],
"timeout":1800,
"mapId":"test_map"
}
]
}
}
我的解析器类有如下内容:
JSONObject requestJSON = new JSONObject(requestBody).getJSONObject("data");
ObjectMapper mapper = new ObjectMapper();
final String jsonData = requestJSON.toString();
OrderDTO mappedObject= mapper.readValue(jsonData , OrderDTO .class);
// I can see value coming from front-end but not populating in the mappedObject
我的OrderDTO.java
@JsonInclude(value = Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true,value = {"hibernateLazyInitializer", "handler", "created"})
public class OrderDTO {
private String username;
private long customerId;
private String source;
private String firstName;
private String lastName;
private String email;
private String contactNumber;
private String password;
private String department;
private String location;
private String status;
private List<OrderConfig> OrderConfigs;
@JsonInclude(value = Include.NON_NULL)
public class OrderConfig {
private String vpnId;
private String serviceId;
private String serviceType;
private String ipAddress;
private String mapId;
private String[] fRoutes;
private Map<String, Object> attributes;
private SubConfig subConfig;
private String routeFlag;
getter/setters
.....
}
all setter/getter
}
@JsonInclude(value=Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown=true,value={“hibernateLazyInitializer”、“handler”、“created”})
公共类OrderDTO{
私有字符串用户名;
私人长客户ID;
私有字符串源;
私有字符串名;
私有字符串lastName;
私人字符串电子邮件;
私人字符串联系人号码;
私有字符串密码;
私人弦乐部;
私有字符串位置;
私有字符串状态;
私有列表命令配置;
@JsonInclude(值=Include.NON_NULL)
公共类OrderConfig{
私有字符串vpnId;
私有字符串serviceId;
私有字符串服务类型;
私有字符串IP地址;
私有字符串mapId;
私有字符串[]fRoutes;
私有地图属性;
私人分包图;
私有字符串路由延迟;
接球手/接球手
.....
}
所有二传手/接球手
}
不知道我错过了什么。这是正确的方法吗?
OrderConfigs
字段将不会初始化,只需根据需要修改bean即可
@JsonProperty("OrderConfigs")
private List<OrderConfig> orderConfigs;
// setter and getter as setOrderConfigs / getOrderConfigs
@JsonProperty(“OrderConfigs”)
私有列表命令配置;
//setter和getter作为setOrderConfigs/getOrderConfigs
看看我的答案。(同一问题)如果您试图使用内部类,正确的使用方法是将其声明为静态,以便Jackson使用内部类。 供参考 所做的代码更改是
@JsonInclude(value=Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown=true)
静态类OrderConfig{
确保json标记名与java对象的变量名匹配
例如:“弗鲁特”:["10.255.253.0/30", " 10.255.254.0/30" ],
使用Jackson时,不需要使用私有字符串[]fRoutes;JSONObject。哪些字段没有填充,全部或部分?