fastjson自动转化参数报错

开发环境:spring-mvc4.1.7、fastjson1.2.7

问题描述:系统采用的前后端完全分离方式,前端页面使用ajax调用后台服务时,想用fastjson自动转化请求参数对象。

// 前端调用$.ajax({
  url : "bas/test.do",
  type : "POST",
  async : true,
  contentType : "application/json; charset=utf-8",
  data : country,//外层定义的json对象
  success : function(rst) {alert(JSON.stringify(rst));
}
// 后台服务1 @ResponseBody
2 @RequestMapping(value = "/add.do", method = { RequestMethod.POST, RequestMethod.GET  }, produces = "application/json;charset=UTF-8")
3 public void add(@RequestBody Country country) {
4     // ...
5 }
运行报错堆栈,如下:严重: Servlet.service() for servlet [SpringMVC] in context with path [/mfd] threw exception [Request processing failed; nested exception is com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 0] with root cause
com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 0
    at com.alibaba.fastjson.parser.deserializer.JavaBeanDeserializer.deserialze(JavaBeanDeserializer.java:232)

网上搜索各种解决方案未果,最后尝试将json对象转化成json字符串,调用成功。

修改为data : JSON.stringify(country)

上一个项目使用jackson时,data参数直接传的是json对象,fastjson不支持这种方式。。。

时间: 2024-10-14 05:56:53

fastjson自动转化参数报错的相关文章

单元测试时候使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且应采用一个TestContext类型的参数报错的解决办法

using Microsoft.VisualStudio.TestTools.UnitTesting; 如果该DLL应用的是 C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll 版本为9.0.0.0 的话,则使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且

jQuery 之 setTimeout 传递字符串参数报错

当你打算调用一些jQuery代码显示隐藏的一个元素,并调用setTimeout()在一段延时之后设置其HTML的内容: 整个页面的代码是这样的. <span style="font-size:18px;"><html> <head> <title></title> </head> <body> <a href="#" id='heihei' onclick="show

Hibernate使用MyExclipse10自动生成配置文件报错

使用MyExclipse10自动生成hibernate映射文件如下: 结果发现启动服务时报以下错误: 原因:因为hibernate换过项目地址,所以dtd文件的地址也换掉了.在hbm.xml文件里面把 http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd 换成 http://www.jboss.org/dtd/hibernate/hibernate-mapping-3.0.dtd 问题就解决了. Hibernate使用MyExc

【spring mvc】后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface

后台spring mvc接收List参数报错如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Speci

关于tomcat对编码不正确的url参数报错的解决

按照规范,url参数必须使用限定字符,其它字符需要进行编码,用像js的encodeurlcomponent函数. 在IE和360浏览器的兼容模式,不会自动对url的参数进行编码,会导致tomcat报错. 对浏览器参数进行编码就解决了问题. Stack Overflow上有问到这个,但是解答不正确,点支持的很少. 百度搜索结果也有提到,说要在nginx对请求进行编码. 原文地址:https://www.cnblogs.com/silvestris/p/12038063.html

mybatis 中文做参数报错

一个简单的查询,如果参数中有中文.如下: <select id="xxxx" resultType="hashmap"> select * from talbe_a a where a.kpeople = ${name} </select> 报错: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.sql.SQ

发现个delphi调用vc写的Dll中包含pchar参数报错奇怪现象

发现个delphi调用vc写的Dll中包含pchar参数奇怪现象 procedure中的第一行语句不能直接调用DLL的函数,否则会运行错,在之前任意加上条语句就不报错了奇怪! vc的DLL源码地址 http://blog.csdn.net/lqena/article/details/46357165 Delphi源码如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Co

记录下httpclient 发送请求 服务端用@RequestBody 自动接收参数 报415

注解是post方式,那么检查以下内容:1. 你是否用了post请求2. 请求是否发送了数据3. 请求内容格式需要是 application/json .jquery 设置 contentType,--这地方要注意,我就是application/text报错4154. 客户端是否出现了服务器没有的字段,spring post 中,字段可少,不可多.

使用swagger传递map类型的参数报错406

1.前言 最近在实现一个分页查询所有的用户及其角色的功能时,遇到了406的问题,费了好长时间才解决,记录一下解决方法. 2.排错过程 前后端分离的项目,写接口的时候我用到了swagger框架.先说下406是什么意思? 406:请求的资源的内容特性无法满足请求头中的条件,因而无法生成响应实体.实体格式由Content-Type头定义的媒体类型决定 解释一下:返回的消息头浏览器无法解释,下面是两种不同的消息头: 3.解决方法 导入下面三个jar包? <!-- https://mvnrepositor