java实现decode编码的json字符串参数服务端解析并创建对象

硅谷探秘者 1471 0 0
例:

java类如下:

public class QuestionnaireSubject {
	private Integer id;
	private String name;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

 则 ajax 需要传输的json字符串为

{id:1,name:'wang'}

后台将这个字符串创建为一个对象

依赖fastjson:
        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
		<dependency>
		    <groupId>com.alibaba</groupId>
		    <artifactId>fastjson</artifactId>
		    <version>1.2.62</version>
		</dependency>
前端js编码:

将一个对象转成json字符串后编码 

encodeURIComponent(JSON.stringify(data))

后端转换工具:

import java.io.UnsupportedEncodingException;
import com.alibaba.fastjson.JSON;
public class JsonToObjectUtil {
	
	/**
	 * 	decode编码的json字符串转对象
	 * @param <T>
	 * @param json
	 * @param c
	 * @return
	 */
	public static <T> T toObject(String json,Class<T> c) {
		if(json==null||"".equals(json)) 
			return null;
		try {
			//解码
			json= java.net.URLDecoder.decode(json,"UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
			return null;
		} 
		//字符串转换对象
		T t = JSON.parseObject(json,c);
        return t;
	}
}
测试接口
	@RequestMapping("test")
	public synchronized void test(String json){
		QuestionnaireSubject q = null;
		try {
			q = JsonToObjectUtil.toObject(json,QuestionnaireSubject.class);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

只要保证json字符串的格式和QuestionnaireSubject类的字段保持一直即可

猜你喜欢
算法基础 254 c#json转换usingSystem; usingSystem.Runtime.Serialization.Json; usingSystem.IO; usingSystem.Text
weblog 477 /groupId artifactIdfastjson/artifactId version1.2.62/version /dependency后 publicsynchronizedvoidm
框架 1575 springboot请求json据不返回指定段在体类段上加上注importcom.fasterxml.jackson.annotation.JsonIgnore;例
java虚拟机(jvm) 1142 这里以HotSpot为例,且所说指普通Java,不包括组和Class等。考资料深入理java虚拟机《周志明》1.内存布局HotSpot虚拟机中,在内存中存储布局可以
official 37 器和器在网络应用中需要某种器,将原始据与自定义消息进行互相转换。网络中都是以据形式来传输据后发送到客户,客户需要据进行
java虚拟机(jvm) 3161 (文中讨论限于普通Java,不包括组和Class等)又是怎样一个过程呢?虚拟机遇到一条new指令时,首先将去检查这个指令是否能在常量池中定位到一个类号引用,且检查这个
weblog 975 SelectORD(‘a’)-:973.CONV(N,from_base,to_base)n进制转换,转换为返回,N是要转换据,from_base是原进制,to_base是目标进制。selectCO
java虚拟机(jvm) 449 也有相当大考意义。“让计算机发执行若干个运算任”与“更充分地利用计算机处理器效能”之间因果关系,看起来顺理成章,际上它们之间关系没有想那么简单,其中一个重要复杂性来源是绝
归档
2018年11月  12 2018年12月  33 2019年01月  28 2019年02月  28 2019年03月  32 2019年04月  27 2019年05月  33 2019年06月  6 2019年07月  12 2019年08月  12 2019年09月  21 2019年10月  8 2019年11月  15 2019年12月  25 2020年01月  9 2020年02月  5 2020年03月  16 2020年04月  4 2020年06月  1 2020年07月  7 2020年08月  13 2020年09月  9 2020年10月  5 2020年12月  3 2021年01月  1 2021年02月  5 2021年03月  7
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo
目录