java实现decode编码的json字符串参数服务端解析并创建对象
硅谷探秘者
2020-03-24发表
0
0
3463
例:
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类的字段保持一直即可