/** Data.clss */ public class Data { private String password, name; public Data() { } public Data(String password, String name) { super(); this.password = password; this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
對象轉換成json stringgit
// obj to string Data data = new Data("123", "spike"); String jsonString = JSON.toJSONString(data);
json string 轉換成對象github
// string to obj Data data2 = JSON.parseObject(jsonString, Data.class);
Data必須有無參構造函數,若是沒有則會報錯。json
ArrayList 轉換成 json string函數
ArrayList<Data> datas = new ArrayList<Data>(); for (int i = 0; i < 10; i++) { Data data = new Data("123", "spike"); datas.add(data); } jsonString = JSON.toJSONString(datas);
json string 轉換成 ArrayListthis
JSONArray jsonArray = JSONArray.parseArray(jsonString); for (int i = 0; i < jsonArray.size(); i++) { Data data = JSON.parseObject(jsonArray.get(i).toString(), Data.class); Log.d("pepelu", "data:" + data.getName()); }
或者:code
ArrayList<Data> datas = (ArrayList<Data>) JSON.parseArray(jsonString, Data.class); for (Data data : datas) { Log.d("pepelu", "data=" + data.getName()); }
按json字符串中的標籤解析:對象
Data data = new Data("123", "spike"); String jsonString = JSON.toJSONString(data); JSONObject jsonObject = JSON.parseObject(jsonString); String name = (String) jsonObject.get("name"); Log.d("pepelu", "name=" + name);
當一個對象中存儲一個json字符串時:字符串
/** JD.class*/ class JD { public JD() { } public String code, message; }
其中message的部分包含一個json字符串,解析:get
private void testJSON() { Data data = new Data("123", "SpikePepelu"); String dString = JSON.toJSONString(data); JD jd = new JD(); jd.code = "12"; jd.message = dString; // jString:{"code":"12","message":"{\"name\":\"SpikePepelu\",\"password\":\"123\"}"} String jString = JSON.toJSONString(jd); JSONObject jsonObject = JSON.parseObject(jString); // messageString:{"name":"SpikePepelu","password":"123"} String messageString = (String) jsonObject.get("message"); Data data2 = JSON.parseObject(messageString, Data.class); Log.d("pepelu", "data name:" + data2.getName()); }
jString的內容:{"code":"12","message":"{"name":"SpikePepelu","password":"123"}"}string
message部分是一個Data的json字符串。
解析時不想生成JD類實例,使用jsonObject.get("message")得到message部分的字符串,而後直接解析成Data實例。