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

2019 精帖
0 505

例:

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类的字段保持一直即可

留言(0)
加载更多
猜你喜欢