JSON.parseObject学习.Android

一,fastjson

fastjson是一个性能很好的json解析器和生成器。主要特点:快速,强大,零依赖。

fastjson完全支持https://json.org的标准,支持各种JDK类型;包括javabean、collection、map、enum、泛型、基本类型等,除了JDK以外不依赖其他任何类库,能够直接运行在javaSE5.0以上版本。

二,parseobject

Json.parseObject(string str)是将参数转化为相应的jsonobject对象,其中参数是键值对形式的jso字符串。转化为jsonobject对象之后就可以使用其内置的方法。

三、JSON.parseObject(String str)与JSONObject.parseObject(String str)的区别

根据源码显示:JSON是一个抽象类,JSON中有一个静态方法parseObject(String text),将text解析为一个JSONObject对象并返回;JSONObject是一个继承自JSON的类,当调用JSONObject.parseObject(result)时,会直接调用父类的parseObject(String text)。所以两者没什么区别,一个是用父类去调用父类自己的静态的parseObject(String text),一个是用子类去调用父类的静态parseObject(String text),两者调的是同一个方法。

fastJson对于json格式字符串的解析主要用到了一下三个类:

JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换。

JSONObject:fastJson提供的json对象。

JSONArray:fastJson提供json数组对象。

我们可以把JSONObject当成一个Map来看,只是JSONObject提供了更为丰富便捷的方法,方便我们对于对象属性的操作

由于JSONObject和JSONArray继承了JSON,所以说也可以直接使用两者对JSON格式字符串与JSON对象及javaBean之间做转换,不过为了避免混淆我们还是使用JSON。

//json字符串-简单对象型

private static final String  JSON_OBJ_STR ="{\"studentName\":\"lily\",\"studentAge\":12}";

//json字符串-数组类型

private static final String  JSON_ARRAY_STR ="[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]";

//复杂格式json字符串

private static final String  COMPLEX_JSON_STR ="{\"teacherName\":\"crystall\",\"teacherAge\":27,\"course\":{\"courseName\":\"english\",\"code\":1270},\"students\":[{\"studentName\":\"lily\",\"studentAge\":12},{\"studentName\":\"lucy\",\"studentAge\":15}]}";


示例1:JSON格式字符串与JSON对象之间的转换。

示例1.1-json字符串-简单对象型与JSONObject之间的转换

  /**

    * json字符串-简单对象型与JSONObject之间的转换

    */

  public static void testJSONStrToJSONObject(){


      JSONObject jsonObject = JSON.parseObject(JSON_OBJ_STR);

      //JSONObject jsonObject1 = JSONObject.parseObject(JSON_OBJ_STR); //因为JSONObject继承了JSON,所以这样也是可以的


      System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));


  }

示例1.2-json字符串-数组类型与JSONArray之间的转换

  /**

    * json字符串-数组类型与JSONArray之间的转换

    */

  public static void testJSONStrToJSONArray(){


      JSONArray jsonArray = JSON.parseArray(JSON_ARRAY_STR);

      //JSONArray jsonArray1 = JSONArray.parseArray(JSON_ARRAY_STR);//因为JSONArray继承了JSON,所以这样也是可以的


      //遍历方式1

      int size = jsonArray.size();

      for (int i = 0; i < size; i++){

          JSONObject jsonObject =jsonArray.getJSONObject(i);

          System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));

      }

      //遍历方式2

      for (Object obj : jsonArray) {

            JSONObject jsonObject =(JSONObject) obj;

          System.out.println(jsonObject.getString("studentName")+":"+jsonObject.getInteger("studentAge"));

      }

  }

示例1.3-复杂json格式字符串与JSONObject之间的转换

  /**

    *复杂json格式字符串与JSONObject之间的转换

    */

  public static void testComplexJSONStrToJSONObject(){


      JSONObject jsonObject = JSON.parseObject(COMPLEX_JSON_STR);

      //JSONObject jsonObject1 = JSONObject.parseObject(COMPLEX_JSON_STR);//因为JSONObject继承了JSON,所以这样也是可以的


      String teacherName = jsonObject.getString("teacherName");

      Integer teacherAge = jsonObject.getInteger("teacherAge");

      JSONObject course = jsonObject.getJSONObject("course");

      JSONArray students = jsonObject.getJSONArray("students");


  }



1,对于JSON对象与JSON格式字符串的转换可以直接用 toJSONString()这个方法。

2,javaBean与JSON格式字符串之间的转换要用到:JSON.toJSONString(obj);

3,javaBean与json对象间的转换使用:JSON.toJSON(obj),然后使用强制类型转换,JSONObject或者JSONArray。

注:以上仅为个人学习笔记记录,仅供参考。



JSON.parseObject学习.Android_第1张图片

你可能感兴趣的:(JSON.parseObject学习.Android)