Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未从内部类的json请求填充Java对象_Java_Json - Fatal编程技术网

未从内部类的json请求填充Java对象

未从内部类的json请求填充Java对象,java,json,Java,Json,已经在不同的网站上搜索过,但找不到正确的答案,因此发布此请求,尽管可能重复。对此表示抱歉 我将下面的json请求发送到我的后端服务,并转换为java对象进行处理。我可以看到传递给我的服务的请求主体,但当我从json转换为java对象时,值不会填充 { "data":{ "username":"martin", "customerId":1234567890, "firstName":"john", "lastName":"smith", "password":"p

已经在不同的网站上搜索过,但找不到正确的答案,因此发布此请求,尽管可能重复。对此表示抱歉

我将下面的json请求发送到我的后端服务,并转换为java对象进行处理。我可以看到传递给我的服务的请求主体,但当我从json转换为java对象时,值不会填充

{  
  "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。哪些字段没有填充,全部或部分?