81,094
社区成员
发帖
与我相关
我的任务
分享
class Test{
private String a;
public Test(String t){a = t;}
public String getA(){return a;}
public void setA(String t){a = t;}
}
class Main{
public static void main(String[] P){
Test t = new Test("''");
JSONObject x = JSONObject.fromObject(x); //{"a":"''"}
String s = x.toString(); //"{\"a\":\"''\"}"
x = JSONObject.fromObject(s); //{"a":""} 字符串中的单引号不见了……
}
}
String test = "{'a':'\\'\\'\\'\\'\\'\\'\\'\\''}"; //"{'a':'\'\'\'\'\'\'\'\''}"
JSONObject json = JSONObject.fromObject(test); //{"a":"''''''"}
test = json.toString().replaceAll("'", "\\\\'"); //"{"a":"\'\'\'\'\'\'"}"
json = JSONObject.fromObject(test); //{"a":"''''"}
test = json.toString().replaceAll("'", "\\\\'"); //"{"a":"\'\'\'\'"}"
json = JSONObject.fromObject(test); //{"a":"''"}
test = json.toString().replaceAll("'", "\\\\'"); //"{"a":"\'\'"}"
json = JSONObject.fromObject(test); //{"a":""}
var url = "/extjs4/ajax/ajaxAction!getJsonObject.action?json={id:1,name:'tom',age:20,email:'\'\'',isIt:true,gender:'a',deposit:1000}"
后台方法:
public void getJsonObject() {
String json = request.getParameter("json");
JSONObject fromObject = JSONObject.fromObject(json);
System.out.println(fromObject.toString());
User user = (User) JSONObject.toBean(fromObject, User.class);
System.out.println(user);
}
后台打印输出:
{"id":1,"name":"tom","age":20,"email":"''","isIt":true,"gender":"a","deposit":1000}
User[id=1,name=tom,age=20,email='',isIt=true,gender=a,deposit=1000]
我已经解决这个问题了,只是不知道是不是最佳方案。有提议或解决方案的,请对自己的发言负责,请试过确认可行后再发言。
楼主这是要做什么?是说你的json字符串中某个属性值为空,还是说它的值就是两个引号[''或""],你要传递引号作为值,要进行转义,你传递一个这个:"''",它自然认为你的这个属性的值是空字符串,要让后台的值为:'',你要进行转义:"\'\'",这样你拿到的某个属性的值才会是两个引号
给你个demo: test.html:TestServlet:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>test.html</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script type="text/javascript" src="jquery-1.4.2.min.js"></script> <script> var count = 0; $(function(){ var data = {'name':'zangsan','age':'25'}; $.ajax({ type:"post", url:"com/testServlet", data:{'jsonstr':JsonToStr(data)}, dataType:"html", success:function(res){ alert(res); } }); }) //json转json串 function JsonToStr(o) { var arr = []; var fmt = function(s) { if (typeof s == 'object' && s != null) return JsonToStr(s); return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s; } for ( var i in o) arr.push("'" + i + "':" + fmt(o[i])); return '{' + arr.join(',') + '}'; } </script> </head> <body> </body> </html>
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); PrintWriter out = response.getWriter(); String jsonstr = request.getParameter("jsonstr"); System.out.println(jsonstr);//输出{'name':'zangsan','age':'25'} JSONObject json = JSONObject.fromObject(jsonstr); out.println(json.toString()); out.flush(); out.close(); }
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>test.html</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script>
var count = 0;
$(function(){
var data = {'name':'zangsan','age':'25'};
$.ajax({
type:"post",
url:"com/testServlet",
data:{'jsonstr':JsonToStr(data)},
dataType:"html",
success:function(res){
alert(res);
}
});
})
//json转json串
function JsonToStr(o) {
var arr = [];
var fmt = function(s) {
if (typeof s == 'object' && s != null)
return JsonToStr(s);
return /^(string|number)$/.test(typeof s) ? "'" + s + "'" : s;
}
for ( var i in o)
arr.push("'" + i + "':" + fmt(o[i]));
return '{' + arr.join(',') + '}';
}
</script>
</head>
<body>
</body>
</html>
TestServlet:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String jsonstr = request.getParameter("jsonstr");
System.out.println(jsonstr);//输出{'name':'zangsan','age':'25'}
JSONObject json = JSONObject.fromObject(jsonstr);
out.println(json.toString());
out.flush();
out.close();
}
你的json字符串格式正确吗?或者说,现在传给后台一个json串,你是怎么获取并转为json的?