今天说一下这个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("女生"));


总结:简单吧 ,主要的还是心态问题,相信谁看了都能明白,只是没能静下心来好好琢磨琢磨,其实也没啥可琢磨的,灰常简单。希望大家碰到简单代码的时候也花点时间琢磨琢磨,比黏贴复制要收获很多。