java Json 串中的转义字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java Json 串中的转义字符相关的知识,希望对你有一定的参考价值。

json = " \"total\": 1,\"rows\": [\"casNum\": \"1031-47-6\" ]
例如这个 , 中间的引号 需要加 转义啊? 要是引号多的话,手动一个个加太费事,有什么快速的方式加上吗?
最好是在Eclipse中设置一下不用转义字符\
不要给我说replace 替换 这个我会:我要的是从根本上去掉\这个字符而且Eclipse还不报错

一:解析普通json

1:不带转化字符

格式"type":"ONLINE_SHIPS","message":"currentTime":1400077615368,"direction":0,"id":1,"latitude":29.5506,"longitude":106.6466

JSONObject jsonObject = new JSONObject(jsonstr).getJSONObject("message");
System.out.println("currentTime:"+jsonObject.get("currentTime"));
System.out.println("direction:"+jsonObject.get("direction"));
System.out.println("latitude:"+jsonObject.get("latitude"));
System.out.println("longitude:"+jsonObject.get("longitude"));

jsonarray
JSONObject jo = ja.getJSONArray("cargoList").getJSONObject(0);

2:带转义字符的json格式

"type":"ONLINE_SHIPS","message":"\\"currentTime\\":1400077615368,\\"direction\\":0,\\"id\\":1,\\"latitude\\":29.5506,\\"longitude\\":106.6466"

其实也很简单,先把它转化成字符串就可以了

JSONObject jsonObject = new JSONObject(jsonstr);
//先通过字符串的方式得到,转义字符自然会被转化掉
String jsonstrtemp = jsonObject.getString("message");
System.out.println("message:"+jsonstrtemp);
jsonObject = new JSONObject(jsonstrtemp);
System.out.println("currentTime:"+jsonObject.get("currentTime"));
System.out.println("direction:"+jsonObject.get("direction"));
System.out.println("latitude:"+jsonObject.get("latitude"));
System.out.println("longitude:"+jsonObject.get("longitude"));

二:遍历Json对象

JSONObject ports = ja.getJSONObject("ports");
Iterator<String> keys = ports.keys();
while(keys.hasNext())
String key=keys.next();
String value = ports.getString(key);


三:使用Gjson,json与对象相互转化

使用Gson轻松将java对象转化为json格式

String json = gson.toJson(Object);//得到json形式的字符串

User user = gson.fromJson(json,User.class);//得到对象

转化成list
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.lc.function.Action;
import com.lc.models.Groups;

public class MapSearch

private void ParseData(String _data)

Gson gson = new Gson();
List<Groups> ps = gson.fromJson(_data, new TypeToken<List<Groups>>().getType());
System.out.println(ps.get(0).getGroup_name());

参考技术A 一:解析普通json
1:不带转化字符
格式"type":"ONLINE_SHIPS","message":"currentTime":1400077615368,"direction":0,"id":1,"latitude":29.5506,"longitude":106.6466

JSONObject jsonObject = new JSONObject(jsonstr).getJSONObject("message");
System.out.println("currentTime:"+jsonObject.get("currentTime"));
System.out.println("direction:"+jsonObject.get("direction"));
System.out.println("latitude:"+jsonObject.get("latitude"));
System.out.println("longitude:"+jsonObject.get("longitude"));

jsonarray

JSONObject jo = ja.getJSONArray("cargoList").getJSONObject(0);

2:带转义字符的json格式
"type":"ONLINE_SHIPS","message":"\"currentTime\":1400077615368,\"direction\":0,\"id\":1,\"latitude\":29.5506,\"longitude\":106.6466"
其实也很简单,先把它转化成字符串就可以了

JSONObject jsonObject = new JSONObject(jsonstr);
//先通过字符串的方式得到,转义字符自然会被转化掉
String jsonstrtemp = jsonObject.getString("message");
System.out.println("message:"+jsonstrtemp);
jsonObject = new JSONObject(jsonstrtemp);
System.out.println("currentTime:"+jsonObject.get("currentTime"));
System.out.println("direction:"+jsonObject.get("direction"));
System.out.println("latitude:"+jsonObject.get("latitude"));
System.out.println("longitude:"+jsonObject.get("longitude"));

二:遍历Json对象

JSONObject ports = ja.getJSONObject("ports");
Iterator<String> keys = ports.keys();
while(keys.hasNext())
String key=keys.next();
String value = ports.getString(key);


三:使用Gjson,json与对象相互转化
使用Gson轻松将java对象转化为json格式
String json = gson.toJson(Object);//得到json形式的字符串
User user = gson.fromJson(json,User.class);//得到对象
参考技术B

带有转义字符的java Json串 如下

"type":"ONLINE_SHIPS","message":"\\"currentTime\\":1400077615368,\\"direction\\":0,\\"id\\":1,\\"latitude\\":29.5506,\\"longitude\\":106.6466"

解析时先把它转化成字符串就可以了 如下

JSONObject jsonObject = new JSONObject(jsonstr);
String jsonstrtemp = jsonObject.optString("message");

解析获取json字符串里的值时,建议用jsonObject.optString的方式,它相较于传统的

jsonObject.getString方式 在得不到你想要的值时候返回空字符串, 而getString的方式

会抛出异常

参考技术C 没办法,用工具一次就加好。比如说Notepad++ 等
用替换的方式一下子弄好,还支持部分正则表达式

你觉得eclipse能辨别你那个双引号需要转义哪些不用转义,怎么可能这么智能。
参考技术D 需要添加的。。。。。。。。在 notepad++ 那样的环境,使用批量替换 ,更快捷

如何在js中去掉json数据中的转义附

举个例子吧,如果你是指json字符串中的转义符还是json对象
如果是json字符串,如下:
var a = \'"473499":"name":"1\\u5e74\\u7ea7","list":"473500":"1\\u73ed"\';
JSON.parse(a)即可
参考技术A replace 替换

以上是关于java Json 串中的转义字符的主要内容,如果未能解决你的问题,请参考以下文章

如何在js中去掉json数据中的转义附

JQuery .ajax 返回json格式,浏览器显示带有转义字符问题

php 数组转换json中括号转义

js解析json字符串报错解决方案(带有转义字符的json字符串)

json解析出现莫名其妙的/字符

java 字符串反斜杠怎么转义