`
bantouyan
  • 浏览: 147431 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

解析Json——操纵JsonArray

    博客分类:
  • Json
阅读更多

      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

6
6
分享到:
评论
3 楼 裴小星 2011-03-17  
OK。谢谢。
2 楼 bantouyan 2011-03-17  
不支持POJO与Json的相互转换。
个人认为POJO与Json的转换规则在不同的应用下会有不同的要求,故没有把这种需求考虑进去。
1 楼 裴小星 2011-03-15  
不错。
有时候希望之间将Java Object(POJO)和Json串相互转换,这个Json库支持这种转换吗?
(类似Google Code 上面那个 Gson 项目)

相关推荐

    JSON(net.sf.json.JSONArray)需要的jar包

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但JSON是独立于语言的,具有广泛的语言支持,包括Java。在Java中,为了...

    kettle解析json串

    - `JSONParser`:用于解析JSON文本到`JSONObject`或`JSONArray`。 #### 2. **示例代码解析** 下面是示例代码中涉及到的关键部分及其解析: ```java // 创建JSON解析器 JSONParser parser = new JSONParser(); /...

    JSONObject、JSONArray需要的jar包

    这些基本操作包括解析JSON字符串到对象、序列化对象为JSON字符串、获取和设置键值对、遍历数组和对象等。这些功能使得JSON处理在Java开发中变得简单而高效。 总之,JSONObject和JSONArray是处理JSON数据的关键工具...

    安卓Android源码——解析json_dome.zip

    本教程将通过分析“安卓Android源码——解析json_dome.zip”中的内容,深入讲解如何在Android应用中解析JSON数据。 首先,我们需要了解Android SDK提供的一些关键类来处理JSON,主要包括`JSONObject`和`JSONArray`...

    C#像java一样优雅的解析JSON数据

    C#的一个解析JSON的工具类,像java一样优雅的解析JSON数据,包含有JSONObject和JSONArray对象。 JSONObject json = new JSONObject(); json.Put("sex", "男"); json.Put("age", 123); json.Put("name", "张三"); ...

    安卓Android源码——安卓Android 解析json_dome.zip

    本资料“安卓Android源码——安卓Android 解析json_dome.zip”聚焦于如何在Android应用中解析JSON数据,为开发者提供了实践案例和代码示例。以下将详细介绍Android中处理JSON的相关知识点。 1. JSON基本结构: ...

    Servlet 解析AJAX 传递的JSONArray

    Servlet 处理 AJAX中传递的JSON格式参数,JSON中含有JSONArray!在网上搜索资源时发现没有相关内容,所以自己写了一下跟大家一起分享!如有雷同,纯属巧合!第一次传资源,有不好的地方希望大家提出建议!

    Gson解析json数据

    `JsonElement`则是JSON数据的抽象表示,包含了JSON的所有基本类型:JsonObject、JsonArray、JsonPrimitive和JsonNull。 对于简单JSON数据的解析,假设我们有如下的JSON字符串: ```json { "name": "张三", "age":...

    安卓Andriod源码——解析json_dome.zip

    这个“安卓Andriod源码——解析json_dome.zip”压缩包很可能包含了一些示例代码,教你如何在Android平台上解析JSON数据。让我们深入探讨一下Android中解析JSON的相关知识点。 首先,理解JSON的结构至关重要。JSON是...

    java解析json的jar包

    此压缩包包含两个jar:json-lib-2.4-jdk15.jar和ezmorph-1.0.6.jar 这两个包都是java解析json数据的依赖包,而且是最新版,开源的东东好多人还要分,俺不要分,只希望对你有用。

    JAVA解析JSON相关.docx

    标题与描述均提到了“JAVA解析JSON”,这表明文档主要关注的是如何在Java环境中解析JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java...

    C#解析Json数据(.html)

    首先,C#提供了多种库来解析和序列化JSON数据,其中最常用的是Newtonsoft.Json,也被称为Json.NET。Json.NET是.NET平台上功能强大的JSON库,支持.NET Framework、.NET Core以及Unity等平台。要使用Json.NET,需要先...

    JSONObject解析json,C# asp.net JSON解析 com.force.json

    C#和ASP.NET是Microsoft开发的编程语言和框架,它们提供了丰富的支持来处理JSON数据,包括解析和序列化。在本篇中,我们将深入探讨如何在C# ASP.NET环境中使用`com.force.json`库来解析JSON。 `com.force.json`是一...

    JSONArray.fromObject()方法和引入net.sf.json所需的依赖包

    关于使用JSONArray.fromObject()方法和引入net.sf.json包所需要的依赖包:commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar

    Android Studio解析JSON对象

    6. **处理JSON数组**:如果值是JSON数组,可以使用`JSONArray`来解析。例如,解析`hobbies`数组: ```java JSONArray hobbiesArray = jsonObject.getJSONArray("hobbies"); for (int i = 0; i (); i++) { String...

    json-lib包(Java解析JSON的所有依赖包)

    3. **解析JSON字符串**:通过`JSONObject.fromObject()`或`JSONArray.fromObject()`方法将JSON格式的字符串转换为Java对象。 4. **序列化Java对象**:使用`JSONObject.toJSONString()`或`JSONArray.toJSONString()`...

    JSONArray解析包

    综上所述,`JSONArray`解析包为我们提供了方便快捷的方式来处理JSON数组。通过`JSONArray.fromObject()`方法,我们可以轻松地将Java对象转换为JSON格式,这在JSON数据的处理中具有很高的实用价值。在实际项目中,...

    java解析json完整案例

    Java解析JSON是一个常见的任务,特别是在开发Web服务或者与API交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,我们可以使用多种库...

    JAVA在线接收解析JSON数据

    JAVA在线接收解析JSON数据,引用的JSON类为 net.sf.json.JSONArray; net.sf.json.JSONObject;

    json net.sf.json

    1. **JSON解析与生成**:`net.sf.json`库提供了`JSONObject`和`JSONArray`类,它们分别对应JSON的Object和Array类型。你可以通过这些类的方法来创建、读取和修改JSON数据。例如,`JSONObject.fromObject()`可以将...

Global site tag (gtag.js) - Google Analytics