一:解析普通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);//得到对象
② java正则转义json中双引号
你的JSON本来就有问题吧,怎么可能引号里面还有引号?如果JSON是JS中的,那么双绰号里面可版以有权单引号,单引号里面也可以有双引号。就像{"地址":"北京市海淀区'中关村南大街'8号"}.
如果JSON在JAVA中,那就用\转义一下。{"地址":"北京市海淀区\"(双引号)中关村南大街\"(双引号)8号"}
或者里面的双引号改成单引号也行{"地址":"北京市海淀区'(单引号)中关村南大街'(单引号)8号"}
③ 使用postman返回的json数据有\无法解析怎么办
你这是字符串,并不是json数据,你把它转换为json对象,里面的转义符\就会自动消失的。
④ java解析json字符串 放到数组中
java解析json字符串时将大括号中的对应为一个类,里面的数据对应为类的属性,最后用数组接受即可。
示例关键代码如下:
//导入net.sf.json.JSONArray和net.sf.json.JSONObject两个jar包
Stringstr="[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]";//一个未转化的字符串
JSONArrayjson=JSONArray.fromObject(str);//首先把字符串转成JSONArray对象
if(json.size()>0){
for(inti=0;i<json.size();i++){
JSONObjectjob=json.getJSONObject(i);//遍历jsonarray数组,把每一个对象转成json对象
System.out.println(job.get("name")+"=");//得到每个对象中的属性值
}
}
⑤ java string转换jsonobject中为什么有\
java 中有转义字符的概念:
1.八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377'
\0:空字符回
2.Unicode转义字符:答\u + 四个十六进制数字;0~65535
\u0000:空字符
3.特殊字符:就3个
\":双引号
\':单引号
\\:反斜线
4.控制字符:5个
\' 单引号字符
\\ 反斜杠字符
\r 回车
\n 换行
\f 走纸换页
\t 横向跳格
\b 退格
⑥ java JSONObject 字符转义问题
我上周也因为这个replace纠结过,后来找到答案,\/这在内存里就算一个字符,replace没用的。想想别的方法吧
⑦ json数据怎么加上转义字符
首先复你的转义范围要制先确定吧?
一般都是对中文、符号进行转义;
中文一般都是转成unicode;
如果数要转换成程序(JAVA)中直接使用的json字符串的话,一般都是在双引号前加.
推荐给你一个json在线转义工具网页链接可以去看下。
⑧ java解析Json,数组括号内的大括号 {'mobiles': [{'1387123456','139123456'}]}
正确格式应该如下:
{"mobiles":["1387123456","139123456"]}