有時保存在數據庫的數據是一串json字符串,須要進行讀取的時候就須要解析操做。數據庫
簡單介紹兩種:json
一、net.sf.json.*數組
二、com.alibaba.fastjson.*spa
須要的包自行下載。指針
第一種使用方式:orm
import net.sf.json.JSONArray;
import net.sf.json.JSONException;
import net.sf.json.JSONObject;three
僅爲json字符串時:字符串
String json = "{'first': 'one','next': 'two'}";get
try {
JSONObject jsonObject = JSONObject.fromObject(json);
Iterator it=jsonObject.keys();
while (it.hasNext()){
System.out.println(jsonObject.get(it.next()));
}
} catch (JSONException e) {
e.printStackTrace();
}string
json字符串數組解析:
String json = "[{'first': 'one','next': 'two'},{'first': 'three','next': 'fore'},{'first': 'five','next': 'six'}]";
try {
JSONArray jsonObject = JSONArray.fromObject(json);
for (Iterator<Object> iterator = jsonObject.iterator(); iterator.hasNext();) {
JSONObject job = (JSONObject) iterator.next();
Iterator<Object> it=job.keys();
while (it.hasNext()){
System.out.println(job.get(it.next()));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
第二種使用方式:
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
僅爲json字符串時:
ex: String json = "{"j1":"json1","j2":"2","j3":false}";
JSONObject job = JSONObject.parseObject(json );
System.out.println(job.get("j1"));
可用toString()來轉換成字符串 但要注意job.get("")到的值爲空時會報空指針異常
if(job.get("j2")!=null){
System.out.println(Integer.parseInt(job.get("j2").toString()));
}
//獲取Boolean類型數據
Boolean b=job.getBoolean(key)
或者 if(job.get("j3")!=null){
String reCP=job.get("j3").toString();
System.out.println(Boolean.getBoolean(j3));
}
在不知道key的狀況下用job.keySet() 獲取全部key值再讀取;
ex:
Set<String> s=job.keySet();
for (String string : s) {
System.out.println(job.get(string));
}
json字符串數組解析:
ex: String json = "[{"j1":"json1","j2":"2","j3":false},{"j1":"json1","j2":"2","j3":false},{"j1":"json1","j2":"2","j3":false}]";
JSONArray jarr = JSONArray.parseArray(insbuyschemeForm.getInsBuySchemeAwardList());
for (Iterator<Object> iterator = jarr.iterator(); iterator.hasNext();) {
JSONObject job = (JSONObject) iterator.next();
//此處獲取方式和上面相同
}
在不知道key的狀況下用job.keySet() 獲取全部key值再讀取;
try {
JSONArray jarr = JSONArray.parseArray(json);
for (Iterator<Object> iterator = jarr.iterator(); iterator.hasNext();) {
JSONObject job = (JSONObject) iterator.next();
Set<String> s=job.keySet();
for (String string : s) {
System.out.println(job.get(string));
}
}
} catch (JSONException e) {
e.printStackTrace();
}
兩種包的解析都有不少方式,有興趣能夠看下其餘方式。json字符串有不少組合,可是都是JSONObject 和JSONArray的組合,轉換正確便可。