今天说一下这个JSON解析。相信大多数新手接触这个东西的时候是比较晕的,我也是迷糊了很长时间,最后总结了下,然后发现其实静下心来研究研究的话实际上并不难理解。嗯,给新手朋友们的提示就是,千万不要眼高手低,用的时候别黏贴复制,花点时间琢磨琢磨,你就会明白这个东西是多么简单。废话不说上代码:
构建json字符串
这个没啥好说的,用String生生的拼写下来也行。拼写的时候最好用StringBuffer,方便点,效率也高点。那咱就看看不拼写,用json怎么构建。
列如:颜色对应语句,不难吧
{
"是否全勤":false,
"课程安排":{"语文":"两天","体育":"三天","数学":"两天"},
"myclass":["一班","二班","三班"],
"教师":"3个",
"男生":20,
"共出勤":7,
"女生":18
代码:
JSONObject student = new JSONObject();//代表了{}
下面三句就是构建这一句:"myclass":["一班","二班","三班"],
JSONArray()对象,依次添加就行
myclass.put("一班").put("二班").put("三班");
student.put("myclass", myclass);
student.put("女生", 18);
student.put("男生", 20);
JSONObject()对象,依次添加
schedule.put("语文", "两天");
schedule.put("数学", "两天");
schedule.put("体育", "三天");
student.put("课程安排", schedule); student.put("共出勤", 7);
student.put("教师", "3个");
student.put("是否全勤", false);
解析json字符串:
先来个简单的,例如:{Code:'LIN',UserID:'1004',UserName:'奥巴马',UserType:'1'},其中就只含有一个{},代码如下:
构建:
StringBuffer sb = new StringBuffer("{Code:'");
sb.append("LIN");
sb.append("',UserID:'");
sb.append(1004);
sb.append("',UserName:'");
sb.append("奥巴马");
sb.append("',UserType:'");
sb.append(102);
sb.append("'}");
String myjson = sb.toString();
解析:
JSONTokener jsonParser = new JSONTokener(myjson);
JSONObject person = (JSONObject) jsonParser.nextValue();//因为就一个{},此处解析的时候也是只生成一个 JSONObject的对象。
person.getString("Code");
person.getString("UserID");
person.getString("UserName");
person.getString("UserType");
再来个复杂点的:
String JSON =
"{" +
" \"教师\" : \"3人\"," +
" \"出勤\" : 40," +
" \"班级\" : { \"男生\" : \"20人\", \"女生\" : \"21人\" }," +
" \"是否全勤\" : false" +
"}";
解析:
JSONTokener jsonParser1 = new JSONTokener(JSON);
JSONObject myclass = (JSONObject) jsonParser1.nextValue(); //第一个JSONObject对象
myclass.getString("教师");
myclass.getString("出勤");
myclass.getJSONObject("班级");
myclass.getBoolean("是否全勤"); JSONObject json2 = myclass.getJSONObject("班级");//第二个JSONObject对象
json2.get("男生");
json2.get("女生");
打印:
System.out.println( myclass.getString("教师")+" "+myclass.getString("出勤")+" "+myclass.getBoolean("是否全勤")+" "+json2.getString("男生")+" "+json2.getString("女生"));
总结:简单吧 ,主要的还是心态问题,相信谁看了都能明白,只是没能静下心来好好琢磨琢磨,其实也没啥可琢磨的,灰常简单。希望大家碰到简单代码的时候也花点时间琢磨琢磨,比黏贴复制要收获很多。