• android jsonarray


    Json数组是子元素的有序集合,每个子元素都有一个下标,可以根据下标操纵Json数组的子元素。类JsonArray是bantouyan-json库对Json数组的抽象,提供操纵Json数组的各种方法。本文就介绍如何操纵JsonArray。

     

    一、创建JsonArray实例

          创建JsonArray实例有两类方法,一是利用超类Json的静态方法parseJsonText、parseJsonReader与 parseJavaCollection获取JsonArray实例,二是直接利用JsonArray类的构造方法创建JsonArray实例。

          根据传入的参数不同,parseJsonText返回一个JsonObject实例或JsonArray实例,利用parseJsonText方法的示例代码如下:

    Java代码 复制代码 收藏代码
    1. String jsonText = "['value1', 'value2', true, null]";    
    2. JsonArray jary = (JsonArray)Json.parseJsonText(jsonText);   

    parseJsonText返回的是一个Json类变量,所以要使用强制类型转换。

          parseJsonReader负责从Reader类型参数内读取Json文本流,然后转换为Json实例,与parseJsonText一样,返回值需要强制类型转换。


          方法parseJavaCollection直接返回JsonArray变量,不用类型转换,示例代码如下:

    Java代码 复制代码 收藏代码
    1. ArrayList<Object> collection = new ArrayList<Object>();    
    2. collection.add("value1");    
    3. collection.add(true);    
    4. collection.add(30);    
    5. collection.add(null);    
    6. JsonArray jary = Json.parseJavaCollection(collection);  

    如果Collection内有复杂的对象需要解析,可以用parseJavaCollection的重载版本parseJavaCollection(Collection, JsonParser)来处理(JsonParser的使用参考解析Json——Json类的静态方法的第五部分)。

          JsonArray类的构造函数有四个重载版本:JsonArray()、JsonArray(int)、JsonArray(Collection)与 JsonArray(Collection, JsonParser)。不带参数与带整型参数的重载版本都构造一个空的JsonArray实例,所不同的是带整型参数的重载版本能够指定 JsonArray初始容量的大小,以避免不必要的重新分配内存。重载版本JsonArray(Collection)与 JsonArray(Collection, JsonParser)的使用类似于Json类的静态方法parseJavaCollection。

     

    二、给JsonArray添加子元素

          JsonArray是子元素的有序集合,所以给JsonArray添加子元素应该指明子元素的位置,方法insert、insertAll、 append、appendAll都可以添加子元素到JsonArray,不同的是方法insert与insertAll可以在任意位置添加子元素,方法 append与appendAll只能在JsonArray的末尾追加子元素。

          方法insert与append都有七种重载版本,方法insertAll与appendAll都有三种重载版本,分别适用于不同的情况。

     

    三、修改JsonArray的子元素

          方法set用来修改JsonArray子元素的值,有七种重载版本,每种版本的第一个参数都是被修改的子元素的下标。

     

    四、获取与检测JsonArray子元素

          JsonArray的每个子元素都是一个Json实例,可以用方法get(int)获取这个实例。至于这个实例的类型,除可以调用方法getType() 获得外,还可以通过JsonArray对方法getType的重载版本getType(int)获取(参数为子元素的下标)。

          利用方法getString(int)可以获取指定下标子元素的字符串值,如果子元素是JsonPrimitive实例,则返回这个实例值对应的字符串(不带引号与转义符),否则返回对应的标准Json文本。

          如果想获取子元素所对应的boolean、double、long、JsonArray与JsonObject类型的值,则可以分别调用方法 getBoolean(int)、getDouble(int)、getLong(int)、getJsonArray(int)与 getJsonObject(int)。与getString方法不一样的是当子元素无法转换为相应的类型时会抛出异常。方法 canToBoolean(int)、canToDouble(int)、canToLong(int)、canToJsonArray(int)与 canToJsonObject(int)可以检测是否可以转换为对应的类型。

          以特定的类型获取子元素时,方法canToXXX返回true并不表明子元素就是所测试的类型。根据bantouyan-json库的设计,如果子元素的类型是INTEGER,则可以得到对应的double类型的值,如果类型时String,对于部分情况,可以得到对应的boolean、long或double类型的值。

     

    五、删除JsonArray子元素

          删除JsonArray的子元素调用方法remove(int),参数为要删除的子元素的下标。

  • 相关阅读:
    端口服务
    系统设计的主要原则是什么?
    Dynamics CRM2015 Custom Code Validation Tool工具的使用
    CONFIGURE ADFS 3.0 WITH SHAREPOINT 2013
    Sharepoint Solution Gallery Active Solution时激活按钮灰色不可用的解决方法
    Dynamics CRM 2015Online Update1 new feature之 插件跟踪日志
    Dynamics CRM2013/2015 Plugin注册工具Register New Assembly时无法看到注册按钮的解决办法
    Dynamics CRM 2015 站点地图公告配置实体显示名称的变更
    Dynamics CRM 2015 Online Update1 UI界面的更新变化
    SQL Server2012 AlwaysOn 无法将数据库联接到可用性组 针对主副本的连接未处于活动状态
  • 原文地址:https://www.cnblogs.com/crazywenza/p/3508797.html
Copyright © 2020-2023  润新知