Json数组是子元素的有序集合,每个子元素都有一个下标,可以根据下标操纵Json数组的子元素。类JsonArray是bantouyan-json库对Json数组的抽象,提供操纵Json数组的各种方法。本文就介绍如何操纵JsonArray。
一、创建JsonArray实例
创建JsonArray实例有两类方法,一是利用超类Json的静态方法parseJsonText、parseJsonReader与parseJavaCollection获取JsonArray实例,二是直接利用JsonArray类的构造方法创建JsonArray实例。
根据传入的参数不同,parseJsonText返回一个JsonObject实例或JsonArray实例,利用parseJsonText方法的示例代码如下:
String jsonText = "['value1', 'value2', true, null]";
JsonArray jary = (JsonArray)Json.parseJsonText(jsonText);
parseJsonText返回的是一个Json类变量,所以要使用强制类型转换。
parseJsonReader负责从Reader类型参数内读取Json文本流,然后转换为Json实例,与parseJsonText一样,返回值需要强制类型转换。
方法parseJavaCollection直接返回JsonArray变量,不用类型转换,示例代码如下:
ArrayList<Object> collection = new ArrayList<Object>();
collection.add("value1");
collection.add(true);
collection.add(30);
collection.add(null);
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),参数为要删除的子元素的下标。
相关阅读:
解析Json——bantouyan-json库概述
解析Json——Json类的静态方法
解析Json——Json类的实例方法
解析Json——操纵JsonObject
解析Json——操纵JsonArray
分享到:
相关推荐
net.sf.json.JSONArray等JSON类所需要的jar包组合。包括JSONObject等
C#的一个解析JSON的工具类,像java一样优雅的解析JSON数据,包含有JSONObject和JSONArray对象。 JSONObject json = new JSONObject(); json.Put("sex", "男"); json.Put("age", 123); json.Put("name", "张三"); ...
Servlet 处理 AJAX中传递的JSON格式参数,JSON中含有JSONArray!在网上搜索资源时发现没有相关内容,所以自己写了一下跟大家一起分享!如有雷同,纯属巧合!第一次传资源,有不好的地方希望大家提出建议!
此压缩包包含两个jar:json-lib-2.4-jdk15.jar和ezmorph-1.0.6.jar 这两个包都是java解析json数据的依赖包,而且是最新版,开源的东东好多人还要分,俺不要分,只希望对你有用。
JSONObject、JSONArray需要的jar包,需要的可以直接联系
JAVA在线接收解析JSON数据,引用的JSON类为 net.sf.json.JSONArray; net.sf.json.JSONObject;
JSONArray解析包,JSONArray.fromObject使用,可以解析map,list等
解析json的工具类,包括JSONObject、JSONArray、JSONException、JSONString等
关于使用JSONArray.fromObject()方法和引入net.sf.json包所需要的依赖包:commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar
通过jsononject和jsonarray解析json数据,并实现完整的输出
java解析json共包含7个包,import net.sf.json.JSONArray; import net.sf.json.JSONObject;
改json jar包,有6个资源包,在实际项目中亲测,大家可以放心使用!
利用GET请求获取到JSON数据,然后再Android Studio中对JSON数组进行解析,获取到的内容展示再ListView上,比较适合萌新学习解析JSON数组,每一个步骤都有注释,非常的详细。
java解析json字符串。 commons-beanutils-1.9.0 commons-collections-3.2.1 commons-lang-2.6 commons-logging-1.1.3 ezmorph-1.0.6 json-lib-2.4-jdk15 demo: package com; import java.util.ArrayList;...
它易于编程人员阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于...
包含js和java后端两部分,分别对json进行解析和新建json字符串或json对象,jsonArray数组,结合简单的单一格式,和复杂的数组对象格式,代码是自己开发项目时实验测试撰写,非常实用,可以缩短你百度查询相关资料的...
Newtonsoft.Json已经足够强大,易用性也没得说。但是在使用过程中存在着一个问题,如果数据不存在...JsonObject类和JsonArray类可以相互嵌套,支持原生类的JsonPath检索能力,满足Json数据解析和Json数据封装常见需求。
如何生成JSON格式的数据 解析JSON格式的数据
JsonObject 与JsonArray 使用时的相关最新jar包(用于java 解析json)
JAVA解析JSON需要用到的所有jar包,可能解析成JSONArray或者JSONObject。解析源码详见博客 https://blog.csdn.net/andy511823558/article/details/103999613