反序列化 JSON 空值 Jakson java
Deserializing JSON empty value Jakson java
我正在使用 Spring 4 MVC、JQDataTable 和 Jaskon 库将 JSON 对象从 JSP 发送到 spring 控制器。
在 table 中,当我单击保存按钮时,我触发了 ajax 调用。这里有两个senario.
- 我的行可能是旧的:在这种情况下,我有部门 ID,hibrnate saveoruupate 命令将更新行。
- 我的行可能是新的:在这种情况下,我没有部门 ID,hibernate saveorupdate 命令将保存新行。
Note:One 两种操作的控制器。
当我点击更新按钮时,
如果行是旧的 json 对象是 "{\"departmentId\":2,\"departmentName\":\"hmkcode\",\"createdBy\":1,\"modifiedBy\":1,\"status\":true}",
JSON 对象反序列化成功并且更新命令成功触发
如果行是新的 json 对象是
{\"departmentId\":,\"departmentName\":\"hmkcode\",\"createdBy\":1,\"modifiedBy\":1,\"status\":true}",
在这种情况下,我的部门 ID 为空,因此 JSON 对象不会得到解析并给出错误。
我知道我必须在 javascript 中处理它以排除部门 ID 标签(如果它是新行)。
应用程序中会有很多大师,所以每次我都必须在 javascript 中处理。 Java脚本增加代码。
有没有办法在相应的 Java 模型中处理。我已将初始化值设为零,但我仍然给出解析错误。
另外:我必须在 Java 模型中添加新命令 属性。如果行是新的或部门 ID 为 0,则自动将命令 属性 设置为 "ADD",如果行是旧的,部门 ID 不为零,则将命令 属性 设置为 "UPADATE"。
updateRow: function (rowID, rowData, commit) {
var jsonToBeSend="{\"departmentId\":"+rowData.departmentId+",\"departmentName\":\""+rowData.departmentName+"\",\"createdBy\":1,\"modifiedBy\":1,\"status\":"+rowData.status+"}";
alert(dept)
$.ajax({
url: "/BusinessReimbursment/addDepartment",
type: 'POST',
dataType: 'json',
data: jsonToBeSend,
contentType: 'application/json',
mimeType: 'application/json',
success: function(data) {
alert(data.success + " " + data.message);
commit(true);
},
error:function(data) {
// alert("error: "+data);
// $("#dataTable").jqxDataTable('deleteRow', rowID);
}
});
public class DepartmentDTO implements Serializable{
private static final long serialVersionUID = 1L;
Integer departmentId=0;
@NotNull
@Size(min=3,max=30,message="Department lenght should be between 3 to 30 character")
String departmentName;
Integer createdBy;
Integer modifiedBy;
@NotNull
Boolean status;
}
@控制器
@RequestMapping(value="/addDepartment", method=RequestMethod.POST)
public @ResponseBody AjaxResponse addDepartment(@RequestBody final DepartmentDTO departmentDTO){
AjaxResponse response=new AjaxResponse();
Department department=DepartmentConvertor.setDepartmentDTOToDepartment(departmentDTO);
if(Validation.validateForNullObject(department)){
departmentService.addDepartment(department);
}
response.setSuccess(Boolean.TRUE);
response.setMessage("Record save Successfully");
return response;
}
又问了一个愚蠢的问题。在模型中我应该使用原始变量还是包装器 类 变量?休眠模型中的相同问题。
如果您了解 JQ Widget 那么:我可以将数据行转换为 JSON。
{\"departmentId\":,\"departmentName\":\"hmkcode\",\"createdBy\":1,\"modifiedBy\":1,\"status\":true}",
in this case my department id is empty and so JSON object dont get
parse and give error.
因为 departmentId
没有值,在这种情况下设置 null
或 ''
空值以成功解析 JSON。
updateRow: function (rowID, rowData, commit) {
var jsonToBeSend = new Object();
if (rowData.departmentId != "" || rowData.departmentId != null){
jsonToBeSend["departmentId"] = rowData.departmentId;
}
jsonToBeSend["departmentName"] = rowData.departmentName;
jsonToBeSend["createdBy"] = 1;
jsonToBeSend["modifiedBy"] = 1;
jsonToBeSend["status"] = rowData.status;
$.ajax({
url: "/BusinessReimbursment/addDepartment",
type: 'POST',
data: JSON.stringify(jsonToBeSend),
beforeSend: function(xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
}
success: function(data) {
alert(data.success + " " + data.message);
commit(true);
},
error:function(data) {
// alert("error: "+data);
// $("#dataTable").jqxDataTable('deleteRow', rowID);
}
});
in model should i use primitive variable or wrapper classes
variable?? Same question in hibernate model.
首选 Wrapper classes,在原始变量中你不能存储空值。还要更改 DTO class
中的以下语句
来自:
Integer departmentId=0;
至:
Integer departmentId;
未保存的新部门模型 classes 应具有 null
ID。
我正在使用 Spring 4 MVC、JQDataTable 和 Jaskon 库将 JSON 对象从 JSP 发送到 spring 控制器。
在 table 中,当我单击保存按钮时,我触发了 ajax 调用。这里有两个senario.
- 我的行可能是旧的:在这种情况下,我有部门 ID,hibrnate saveoruupate 命令将更新行。
- 我的行可能是新的:在这种情况下,我没有部门 ID,hibernate saveorupdate 命令将保存新行。 Note:One 两种操作的控制器。
当我点击更新按钮时,
如果行是旧的 json 对象是 "{\"departmentId\":2,\"departmentName\":\"hmkcode\",\"createdBy\":1,\"modifiedBy\":1,\"status\":true}",
JSON 对象反序列化成功并且更新命令成功触发
如果行是新的 json 对象是
{\"departmentId\":,\"departmentName\":\"hmkcode\",\"createdBy\":1,\"modifiedBy\":1,\"status\":true}",
在这种情况下,我的部门 ID 为空,因此 JSON 对象不会得到解析并给出错误。
我知道我必须在 javascript 中处理它以排除部门 ID 标签(如果它是新行)。 应用程序中会有很多大师,所以每次我都必须在 javascript 中处理。 Java脚本增加代码。 有没有办法在相应的 Java 模型中处理。我已将初始化值设为零,但我仍然给出解析错误。 另外:我必须在 Java 模型中添加新命令 属性。如果行是新的或部门 ID 为 0,则自动将命令 属性 设置为 "ADD",如果行是旧的,部门 ID 不为零,则将命令 属性 设置为 "UPADATE"。
updateRow: function (rowID, rowData, commit) {
var jsonToBeSend="{\"departmentId\":"+rowData.departmentId+",\"departmentName\":\""+rowData.departmentName+"\",\"createdBy\":1,\"modifiedBy\":1,\"status\":"+rowData.status+"}";
alert(dept)
$.ajax({
url: "/BusinessReimbursment/addDepartment",
type: 'POST',
dataType: 'json',
data: jsonToBeSend,
contentType: 'application/json',
mimeType: 'application/json',
success: function(data) {
alert(data.success + " " + data.message);
commit(true);
},
error:function(data) {
// alert("error: "+data);
// $("#dataTable").jqxDataTable('deleteRow', rowID);
}
});
public class DepartmentDTO implements Serializable{
private static final long serialVersionUID = 1L;
Integer departmentId=0;
@NotNull
@Size(min=3,max=30,message="Department lenght should be between 3 to 30 character")
String departmentName;
Integer createdBy;
Integer modifiedBy;
@NotNull
Boolean status;
}
@控制器
@RequestMapping(value="/addDepartment", method=RequestMethod.POST)
public @ResponseBody AjaxResponse addDepartment(@RequestBody final DepartmentDTO departmentDTO){
AjaxResponse response=new AjaxResponse();
Department department=DepartmentConvertor.setDepartmentDTOToDepartment(departmentDTO);
if(Validation.validateForNullObject(department)){
departmentService.addDepartment(department);
}
response.setSuccess(Boolean.TRUE);
response.setMessage("Record save Successfully");
return response;
}
又问了一个愚蠢的问题。在模型中我应该使用原始变量还是包装器 类 变量?休眠模型中的相同问题。
如果您了解 JQ Widget 那么:我可以将数据行转换为 JSON。
{\"departmentId\":,\"departmentName\":\"hmkcode\",\"createdBy\":1,\"modifiedBy\":1,\"status\":true}", in this case my department id is empty and so JSON object dont get parse and give error.
因为 departmentId
没有值,在这种情况下设置 null
或 ''
空值以成功解析 JSON。
updateRow: function (rowID, rowData, commit) {
var jsonToBeSend = new Object();
if (rowData.departmentId != "" || rowData.departmentId != null){
jsonToBeSend["departmentId"] = rowData.departmentId;
}
jsonToBeSend["departmentName"] = rowData.departmentName;
jsonToBeSend["createdBy"] = 1;
jsonToBeSend["modifiedBy"] = 1;
jsonToBeSend["status"] = rowData.status;
$.ajax({
url: "/BusinessReimbursment/addDepartment",
type: 'POST',
data: JSON.stringify(jsonToBeSend),
beforeSend: function(xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
}
success: function(data) {
alert(data.success + " " + data.message);
commit(true);
},
error:function(data) {
// alert("error: "+data);
// $("#dataTable").jqxDataTable('deleteRow', rowID);
}
});
in model should i use primitive variable or wrapper classes variable?? Same question in hibernate model.
首选 Wrapper classes,在原始变量中你不能存储空值。还要更改 DTO class
中的以下语句来自:
Integer departmentId=0;
至:
Integer departmentId;
未保存的新部门模型 classes 应具有 null
ID。