Javascript JQuery ajax/post在数据字段中设置JSON会导致JsonMappingException
我在向服务器发送JQuery帖子时遇到问题。我已将问题缩小到javascript中未正确设置数据字段,这导致了一个异常: org.codehaus.jackson.map.JsonMappingException:无法反序列化 com.myserver.rest.messages.dto.NewMessageDTO的实例 启动外\u数组令牌 工作正常但不太干净的代码:Javascript JQuery ajax/post在数据字段中设置JSON会导致JsonMappingException,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我在向服务器发送JQuery帖子时遇到问题。我已将问题缩小到javascript中未正确设置数据字段,这导致了一个异常: org.codehaus.jackson.map.JsonMappingException:无法反序列化 com.myserver.rest.messages.dto.NewMessageDTO的实例 启动外\u数组令牌 工作正常但不太干净的代码: $.ajax({ type: "POST", url: "
$.ajax({
type: "POST",
url: "../resources/messages/",
data: '{"subject": "' + subject +
'", "message": "' + message +
'", "messageType": "' + type +
'", "employeeIDs": [' + employeeIDs +
'], "assignmentIDs": [' + assignmentIDs +']}',
contentType: "application/json",
success: successHandler,
error: defaultErrorHandler
});
这使得:
{“主题”:“测试”,“消息”:“测试”,“消息类型”:“消息”,“员工ID”:[461485],“分配ID”:[103]}
不起作用,但更干净的代码:
$.ajax({
type: "POST",
url: "../resources/messages/",
data: {'subject': subject, 'message': message, 'messageType': type, 'employeeIDs[]': employeeIDs, 'assignmentIDs[]': assignmentIDs},
contentType: "application/json",
success: successHandler,
error: defaultErrorHandler
});
由于某些原因,它呈现为application/x-www-form-urlencoded:
主题=测试和消息=测试和消息类型=消息和员工ID%5B%5D=461和员工ID%5B%5D=485和分配ID%5B%5D=103
你知道我做错了什么吗?提前感谢您的帮助试试这个,它会工作得很好,而且更干净
$.ajax({
type: "POST",
url: "../resources/messages/",
data: {
subject: subject,
message: message,
messageType: type,
employeeIDs: employeeIDs,
assignmentIDs: assignmentIDs
},
contentType: "application/json",
success: successHandler,
error: defaultErrorHandler
});
代码第一部分的问题是,您将整个数据作为一个字符串发送,其中每个数据属性都应该是一个键/值对。在第二部分中,您没有为数组字段正确创建键名。您不必为数组字段包含
[]
。试试这个,它应该工作得很好,而且更干净
$.ajax({
type: "POST",
url: "../resources/messages/",
data: {
subject: subject,
message: message,
messageType: type,
employeeIDs: employeeIDs,
assignmentIDs: assignmentIDs
},
contentType: "application/json",
success: successHandler,
error: defaultErrorHandler
});
代码第一部分的问题是,您将整个数据作为一个字符串发送,其中每个数据属性都应该是一个键/值对。在第二部分中,您没有为数组字段正确创建键名。您不必为数组字段包含
[]
。数组有点古怪,请尝试以下方法:
{'subject': subject, 'message': message, 'messageType': type, 'employeeIDs': employeeIDs, 'assignmentIDs': assignmentIDs}
这假设employeeid
和assignmentid
是数组
这是一个演示:阵列有点古怪,试试这个:
{'subject': subject, 'message': message, 'messageType': type, 'employeeIDs': employeeIDs, 'assignmentIDs': assignmentIDs}
这假设employeeid
和assignmentid
是数组
这里是一个演示:在您的工作示例中,您有名为
employeeIDs
和assignmentIDs
的变量,但在非工作代码中,您添加了[]
在每个变量的末尾。在您的工作示例中,您有名为EmployeeId
和AssignmentId的变量,但在非工作代码中,您在每个变量的末尾追加了[]
。在JSON模式中,字符串只有用双引号括起来时才有效:。很多实现对此并不严格,但看起来您的服务器的实现是严格的 在JSON模式中,字符串只有用双引号括起来时才有效:。很多实现对此并不严格,但看起来您的服务器的实现是严格的 contentType:“application/json”
表示调用的结果是json。所有数据都在发送之前
不太干净的代码将数据作为JSON字符串发送,这显然是。/resources/messages/
所期望的
要使其更清晰并将数据保持为JSON字符串,请执行以下操作:
$.ajax({
'type': 'POST',
'url': '../resources/messages/',
'data': '{' +
"'subject':" + subject + ','
"'message':" message + ','
"'messageType':" type + ','
"'employeeIDs':[" employeeIDs + '],'
"'assignmentIDs':[" assignmentIDs + ']' +
'}',
'contentType': "application/json",
'success': successHandler,
'error': defaultErrorHandler
});
或
希望这有帮助
PetecontentType:“application/json”
表示调用的结果是json。所有数据都在发送之前
不太干净的代码将数据作为JSON字符串发送,这显然是。/resources/messages/
所期望的
要使其更清晰并将数据保持为JSON字符串,请执行以下操作:
$.ajax({
'type': 'POST',
'url': '../resources/messages/',
'data': '{' +
"'subject':" + subject + ','
"'message':" message + ','
"'messageType':" type + ','
"'employeeIDs':[" employeeIDs + '],'
"'assignmentIDs':[" assignmentIDs + ']' +
'}',
'contentType': "application/json",
'success': successHandler,
'error': defaultErrorHandler
});
或
希望这有帮助
皮特我也试过了,但运气不好。它仍在将json转换为application/x-www-form-urlencodedy,然后您可以在服务器端代码中将其解码为对象。我使用PHP,在PHP中有一个json\u decode()
函数,它接受一个字符串并返回一个对象。如果您能解释投票结果是否被否决,我们将不胜感激。投票被否决的原因很可能是我想知道的。谢谢。@TravisNelsonjson\u decode
可能不是你想要的。我在考虑这个问题,你只需要反序列化服务器端脚本中的变量。很抱歉,投票失败了,但是你的答案不起作用,我不希望其他人读到这个错误的方向。我也尝试了这个,但运气不好。它仍在将json转换为application/x-www-form-urlencodedy,然后您可以在服务器端代码中将其解码为对象。我使用PHP,在PHP中有一个json\u decode()
函数,它接受一个字符串并返回一个对象。如果您能解释投票结果是否被否决,我们将不胜感激。投票被否决的原因很可能是我想知道的。谢谢。@TravisNelsonjson\u decode
可能不是你想要的。我在考虑这个问题,你只需要反序列化服务器端脚本中的变量。很抱歉,投票失败了,但你的答案不起作用,我不希望其他阅读此内容的人走错方向。不,这不起作用。EmployeeId和AssignmentId都是数组,因此不确定如何处理到jsonSorry的转换,关于下一票,但您的答案不起作用,我不希望其他阅读此内容的人走错方向,这是因为您没有在问题中指定完整的信息。我如何知道employeeIDs
不是数组并且包含逗号分隔的员工ID?这同样适用于AssigmentID。如果我知道的话,我的答案会解决的。不,这不起作用。EmployeeId和AssignmentId都是数组,因此不确定如何处理到jsonSorry的转换,关于下一票,但您的答案不起作用,我不希望其他阅读此内容的人走错方向,这是因为您没有在问题中指定完整的信息。我如何知道employeeIDs
不是数组并且包含逗号分隔的员工ID?这同样适用于AssigmentID。如果我知道的话,