① java正则转义json中双引号
你的JSON本来就有问题吧,怎么可能引号里面还有引号?如果JSON是JS中的,那么双绰号里面可以有单引号,单引号里面也可以有双引号。就像{"地址":"北京市海淀区'中关村南大街'8号"}.
如果JSON在JAVA中,那就用\转义一下。{"地址":"北京市海淀区\"(双引号)中关村南大街\"(双引号)8号"}
或者里面的双引号改成单引号也行{"地址":"北京市海淀区'(单引号)中关村南大街'(单引号)8号"}
② java 怎么将string转为json数据
string转json有三种方法:
第一种:string直接转json
String json = "{"2":"efg","1":"abc"}"; JSONObject json_test =
JSONObject.fromObject(json); 将string的双引号转义即可,适用于字符串较短的
第二种:将string转为list后转为json
Listlist = new ArrayList(); list.add("username");
list.add("age"); list.add("sex"); JSONArray array = new JSONArray();
array.add(list);
可以使用list的add函数将需要的字符串拼接即可,但是这个只能使用jsonarry
第三种:将string转为map后转为json
Mapmap = new HashMap();
map.put("1", "abc");
map.put("2", "efg");
JSONArray array_test = new JSONArray();
array_test.add(map);
JSONObject jsonObject = JSONObject.fromObject(map);
这里使用map就可以将字符串转化为JSONArray或者JSONObject都可以,但是这里的键不能使用int型
③ json格式的字符串转换为java对象
先来解释反斜杠干嘛用的:
你既然提到了是json字符串,对,请注意字符串三个字。什么是字符串?两个引号之间的就是一个字符串比如:"abcdefg"这就是字符串.
假如我有个json对象:
{
"message" : "success"
}
那么问题来了,怎么把它放到一个String字符串对象里呢?
那么我们都会这么做:
Stringjson="{"message":"success"}";
对吧?但是这么做对吗?前面说过了,字符串是引号开始,引号结尾的,再看一眼这么做对吗?
StringjsonStr="{"message":"success"}";
Infoinfo=JSON.parseObject(jsonStr,Info.class);
System.out.println(info.getMessage());
这里的fastjson只是处理json的框架中的一个,此外还有jackson、Gson等等,可以根据自己的需求选择一个就可以了。
④ java : json 过滤不合法字符的工具包工具类工具
json中没有自带的过滤不合法字符的工具类,需要用户自己编写。
将源数据中的'、"、\\、空格、换行等都替换成转义符,这样你拼接的json数据就是正常的,显示出来格式和数据库中的一样。
function valueReplace(v) {
if (v.indexOf("\"") != -1) {
v = v.toString().replace(new RegExp('(["\"])', 'g'), "\\\"");
}
else if (v.indexOf("\\") != -1)
v = v.toString().replace(new RegExp("([\\\\])", 'g'), "\\\\");
return v;
}