一:解析普通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"]}