sd6292766 2012-04-29 22:36
浏览 368
已采纳

SPRING3MVC接收JSON参数的问题 JSON解析为空

我想把前台页面里一个JSON结构的数据传到controller,尝试了数十次,由map到list到string都无法识别。
JSON的数据结构如下[code="java"]{"info":{"templateName":$("#templateName").val(),"templateNo":"tmp156464"}}[/code]

调用方式是通过jquery的ajax调用spring后台,[code="java"]$("#btSaveTemplate").click(function()

            {

// alert($("#templateName").val());
var data = {"info":{"templateName":$("#templateName").val(),"templateNo":"tmp156464"}};
var data2 = {"templateName":$("#templateName").val()};

                $.ajax({
                    type: "get",//使用get/post方法访问后台
                    dataType: "json",//返回json格式的数据
                    url: "lotty/add",//要访问的后台地址
                    data: data,

                    success: function(msg){//msg为返回的数据,在这里做数据绑定
                        if(msg == '1'){
                            alert('操作成功');
                            location.reload();
                        }
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        alert("error:" + textStatus + " exception:" + errorThrown);
                    }

                });[/code]

后台spring确实收到了请求,并且执行了相应的方法,如下:
[code="java"]@ResponseBody
@RequestMapping(value="/add", method=RequestMethod.GET)
public String doAdd([color=red][b]String info[/b][/color],Model model) throws Exception;[/code]

红色粗体的地方,用String接收是null,改用List和HashMap都不行,后来在SPRING的JAR包中,翻到一个MappingJacksonJsonView,尝试了下,还是空值。之后,我在方法里加了HttpServletRequest参数,郁闷的是:request里面的parameter部分为空
我想可能是SPRING注入处理JSON类的地方出错了,但是这个也不太可能。因为我传最基本的纯key-value结构的JSON数据,后台能成功捕获到(我的做法比较笨,前台有多少个key,controller方法里有多少个对应参数的那种)
这是我SPRING的相关配置:[code="java"][/code]
然后注入:[code="java"]

    <property name="messageConverters">
        <list>
            <ref local="mappingJacksonHttpMessageConverter"/>
        </list>
    </property>
</bean>[/code]

到此,实在不知道其他的解决方法了。
我的想法是,在实际应用中如果做批量插入的话,可以一次提交一个大的JSON数据,在后台里解析成JSONObject对象,再逐步取值。试了大半天,没有结果,上来问问大家,SPRING3里面JSON做参数的一些经验。

  • 写回答

4条回答

  • iteye_10459 2012-04-30 19:03
    关注

    简单点的方法以就是直接将你要传的json数据当成一个字符串提交到后台,后台使用JSONObject相关的方法 可以直接转成对应的MAP对象。然后你就可以处理了。大致的想法就是绕过springmvc本身的json处理类,把你想的"JSON"当成字符串传到后台。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器