spring mvc 怎么获取json

spring mvc 怎么获取json,第1张

首先准备以下 jar包:

commons-logging-113jar

jackson-core-asl-192jar

jackson-mapper-asl-192jar

spring-aop-406RELEASEjar

spring-beans-406RELEASEjar

spring-context-406RELEASEjar

spring-core-406RELEASEjar

spring-expression-406RELEASEjar

spring-web-406RELEASEjar

spring-webmvc-406RELEASEjar

其中commons-logging-113jar,jackson-core-asl-192jar,jackson-mapper-asl-192jar均可在struts2的工具包中取得

导入以上包后,去webxml中进行配置,配置文件如下:

<xml version="10" encoding="UTF-8"><web-app xmlns:xsi=">

接下来我们再看springMVC-servletxml,如下:

<xml version="10" encoding="UTF-8"><beans xmlns=">

接下来我们再看vo对象即值对象Userjava,如下:

package orgxtpojo;import javaioSerializable;

@SuppressWarnings("serial")public class User implements Serializable {    private long userId;    private String userName;    private String userPassword;    public long getUserId() {        return thisuserId;

}    public void setUserId(long userId) {        thisuserId = userId;

}    public String getUserName() {        return thisuserName;

}    public void setUserName(String userName) {        thisuserName = userName;

}    public String getUserPassword() {        return thisuserPassword;

}    public void setUserPassword(String userPassword) {        thisuserPassword = userPassword;

}

}

好接下来便轮到了Controller的类TestJSONControllerjava,如下:

package orgxtcontroller;import orgspringframeworkstereotypeController;import orgspringframeworkwebbindannotationRequestBody;import orgspringframeworkwebbindannotationRequestMapping;import orgspringframeworkwebbindannotationRequestMethod;import orgspringframeworkwebbindannotationResponseBody;import orgxtpojoUser;

@Controller

@RequestMapping("/test")public class TestJSONController {    /

看value属性,是以do结尾的,这正是webxml配置url-pattern的值为do的原因,

这样所有的请求链接都必须以do结尾,这样做的好处在于可以将请求链接同其他链接区分开来

笔者建议如此做(当然了,你也可以将do换成html,htm或者其他)    /

@RequestMapping(value = "/testJSONdo",method={RequestMethodPOST})

@ResponseBody    public User testJSON(@RequestBody User user) {

Systemoutprintln(usergetUserName() + " " + usergetUserPassword());        return user;

}

}

在以上类中出现的@ResponseBody和@RequestBody是关键,前者用于将JSON数据返回客户端,后者用于接受客户端的JSON数据

接下来我们来看看客户端的代码,客户端的代码由jquery完成

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 401 Transitional//EN" ">

以上jsp文件中出现了一个JSONstringify()函数,此函数由jquery提供,作用在于将JSON数据转换为字符串,之所以要这么做,原因在于服务端的@RequestBody只能识别字符串,而不能识别JSON对象

json中取出对象的属性值步骤如下:

1、打开vscode,创建一个测试页面JsonTesthtml,用于演示在js中如何获取json对象的属性集合。

2、在测试页面中,定义一个js变量,将其赋值为json格式的字符串,用于模拟从后台返回过来的json字符串值,以及后续转换为json对象,和获取其属性集合。var json = "[{\"Col1\": \"Hello\", \"Col2\": \"World\"}, {\"Col1\": \"您好\", \"Col2\": \"世界\"}]"。

3、使用js的eval函数,将json字符串的变量值,转换为json对象。var $json = eval("(" + json + ")");

4、得到json对象之后,使用for-in循环语句,得到json对象的序号,也就是,这个json对象中,还有多少个子对象。

5、因为js是弱类型的语言,并不要求json对象中的每个子对象属性都一样。所以,在得到序号之后,使用Objectkeys($json[i]); 就能获取到当前json子对象的属性集合。

6、如果想要获取到json对象的每个具体的列名和值,就需要再加一个for循环,遍历列名,得到列名和值。

当然是可以使用JSONObject接收咯,但是一般不建议这么做,你这么做的你的代码可读性就非常的差了,后人接手你的代码,根本不知道你的前端传参有哪些,每个字段又是代表什么意思,想这么做无非就是懒得写实体想节省点时间,相信我,多写一个实体带来的收益远远大于你节省的那点时间,况且写一个实体类注释每个字段的意义花费不了几个时间的。

import javaioIOException;

import netsfjsonJSONArray;

import netsfjsonJSONObject;

import orgapachecommons>

JSONObject jsonObject = new JSONObject();\x0d\Map map = requestgetParameterMap();\x0d\Iterator it = mapkeySet()iterator();\x0d\while(ithasNext()){\x0d\String key = (String)itnext();\x0d\String[] values = (String[])mapget(key);\x0d\jsonObjectaccumulate(key, values[0]);\x0d\}\x0d\\x0d\String name = jsonObjectgetString("userName"); //返回从前台接受的用户名\x0d\Systemoutprintln(name); //输出用户名\x0d\\x0d\jsonObjectclear(); // 清空jsonObjec中的数据\x0d\jsonObjectput("love" , "足球"); //将足球赋给love这个变量名\x0d\outprint(jsonObject); //返回json格式的数据

以上就是关于spring mvc 怎么获取json全部的内容,包括:spring mvc 怎么获取json、json中怎么取出对象的属性值啊、java注解@RequestBody的接收类型可以用JSONObject吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9338263.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存