美文网首页
JSON.parseObject学习.Android

JSON.parseObject学习.Android

作者: 妤亓子 | 来源:发表于2019-04-10 09:48 被阅读0次

    一,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<String,Object>来看,只是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

          本文链接:https://www.haomeiwen.com/subject/dbsgiqtx.html