Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.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
Java 从Android 2发布嵌套对象,服务器接收子元素null_Java_Android_Post_Retrofit2_Nested Object - Fatal编程技术网

Java 从Android 2发布嵌套对象,服务器接收子元素null

Java 从Android 2发布嵌套对象,服务器接收子元素null,java,android,post,retrofit2,nested-object,Java,Android,Post,Retrofit2,Nested Object,使用Reformation2向服务器发布嵌套对象(SpringFramework)。服务器可以读取第一级属性,但列表属性为空 检查子元素(列表)是否在Android应用程序上通过2在post之前设置了object Android端(改型2调用服务器API): @POST(“休息/上传”) @标题(“内容类型:application/json;字符集=UTF-8”) 调用uploadRecords(@Body UploadRequest UploadRequest); Android端(上传请求

使用Reformation2向服务器发布嵌套对象(SpringFramework)。服务器可以读取第一级属性,但列表属性为空

检查子元素(列表)是否在Android应用程序上通过2在post之前设置了object

Android端(改型2调用服务器API):
@POST(“休息/上传”)
@标题(“内容类型:application/json;字符集=UTF-8”)
调用uploadRecords(@Body UploadRequest UploadRequest);
Android端(上传请求对象):
public类UploadRequest扩展了AbsRestRequest{
@暴露
列表ListOfFlatenAttributesObject;
公共列表getListOfFlatenAttributesObject(){
返回ListOfFlatenAttributesObject;
}
public void setListOfFlatenAttributesObject(列表listOfFlatenAttributesObject){
ListOfFlatenAttributesObject=ListOfFlatenAttributesObject;
}
}
Java服务器端代码(UploadRequest对象):
public类UploadRequest扩展了AbsRestRequest{
私有ArrayList ListOfFlatenAttributesObject;
}
Java服务器端代码(控制器):
@RequestMapping(value=“/upload”,method=RequestMethod.POST,consumes=“application/json”,products=“application/json”)
@ResponseStatus(值=HttpStatus.OK)
@应答器
公共响应属性上载(@RequestBody uploadrequestobject){
UploadResponse=新的UploadResponse();
System.out.println(“\t”+requestObject.getActionType()+“\t”+AdmsUtils.date2Str(requestObject.getActionDateTime(),DateFormatConfig.getWebDateTime());
//可以读取AbsRestRequest中的字符串属性。
System.out.println(“\t FlatEnableAttribute对象的记录计数:”+(requestObject.getListOfFlatenAttributesObject()==null?0:requestObject.getListOfFlatenAttributesObject().size());
//requestObject.getListOfFlatenAttributesObject()的空对象
......
返回新的ResponseEntity(response,HttpStatus.OK);
}
为什么服务器上的requestObject.getListOfFlatenAttributesObject()读取为空?在发布之前,检查对象是否已在Android应用程序中设置。 (在Android Studio调试模式下选中)

问题已经解决。 根本原因在于服务器端编码。 类UploadRequest中的属性,变量的第一个字母应为小写

public class UploadRequest extends AbsRestRequest {
    @Expose
    List<FlatenAttributesObject> **l**istOfFlatenAttributesObject;

    public List<FlatenAttributesObject> getListOfFlatenAttributesObject() {
        return **l**istOfFlatenAttributesObject;
    }
    public void setListOfFlatenAttributesObject(List<FlatenAttributesObject> listOfFlatenAttributesObject) {
        listOfFlatenAttributesObject = listOfFlatenAttributesObject;
    }
}
public类UploadRequest扩展了AbsRestRequest{
@暴露
列表**l**istOfFlatenAttributesObject;
公共列表getListOfFlatenAttributesObject(){
返回**l**istOfFlatenAttributesObject;
}
public void setListOfFlatenAttributesObject(列表listOfFlatenAttributesObject){
listOfFlatenAttributesObject=listOfFlatenAttributesObject;
}
}
ListOfFlatenAttributesObject”的第一个字母导致springframework无法识别属性。 它应该是“listOfFlatenAttributesObject”,问题已经解决

public class UploadRequest extends AbsRestRequest {
    @Expose
    List<FlatenAttributesObject> ListOfFlatenAttributesObject;

    public List<FlatenAttributesObject> getListOfFlatenAttributesObject() {
        return ListOfFlatenAttributesObject;
    }
    public void setListOfFlatenAttributesObject(List<FlatenAttributesObject> listOfFlatenAttributesObject) {
        ListOfFlatenAttributesObject = listOfFlatenAttributesObject;
    }
}
public class UploadRequest extends AbsRestRequest {
    private ArrayList<FlatenAttributesObject> ListOfFlatenAttributesObject;
}
@RequestMapping(value="/upload", method=RequestMethod.POST, consumes="application/json", produces="application/json")
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
public ResponseEntity<UploadResponse> Upload(@RequestBody UploadRequest requestObject) {
    UploadResponse response = new UploadResponse();

    System.out.println("\t" + requestObject.getActionType() + " \t" + AdmsUtils.date2Str(requestObject.getActionDateTime(), DateFormatConfig.getWebDateTime())); 
    //String attribute in AbsRestRequest can be read. 

    System.out.println("\tRecord Count of FlatenAttributesObject: " + (requestObject.getListOfFlatenAttributesObject()==null?0:requestObject.getListOfFlatenAttributesObject().size()));
    //Null object for requestObject.getListOfFlatenAttributesObject()

    ......
    return new ResponseEntity<UploadResponse>(response, HttpStatus.OK);
}
public class UploadRequest extends AbsRestRequest {
    @Expose
    List<FlatenAttributesObject> **l**istOfFlatenAttributesObject;

    public List<FlatenAttributesObject> getListOfFlatenAttributesObject() {
        return **l**istOfFlatenAttributesObject;
    }
    public void setListOfFlatenAttributesObject(List<FlatenAttributesObject> listOfFlatenAttributesObject) {
        listOfFlatenAttributesObject = listOfFlatenAttributesObject;
    }
}