`

操纵JsonObject的方法

    博客分类:
  • JAVA
阅读更多

操纵JsonObject的方法


转自http://developer.51cto.com/art/201103/249174.htm

 

Json对象是Name Value对(即子元素)的无序集合,相当于一个Map对象。JsonObject类是bantouyan-json库对Json对象的抽象,提供操纵Json对象的各种方法。本文就介绍如何操纵JsonObject类。

一、创建JsonObject实例

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

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

Java代码

[java] view plaincopy
  1. String jsonText = "{'name1': 'value1', 'name2': 'value2'}";       
  2. JsonObject jobj = (JsonObject)Json.parseJsonText(jsonText);    

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

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

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

Java代码

[java] view plaincopy
  1. HashMap map = new HashMap();       
  2. map.put("nameA""valueA");        
  3. map.put("nameB""valueB");        
  4. JsonObject jobj = Json.parseJavaMap(map);    

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

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

二、给JsonObject添加子元素

给JsonObject实例添加子元素调用方法add或addAll。bantouyan-json库规定,方法add与addAll都不能添加Name为null的子元素,也不能添加与已有子元素Name相同的子元素,否则会抛出异常。

方法add有七种重载版本,方法addAll有三种重载版本,分别使用于不同的情况。

三、变更JsonObject子元素的Value

要改变JsonObject子元素的Value可以调用方法set与setAll。这两个方法都忽略Name为null的子元素,如果存在Name相同的子元素,则更改这个子元素的Value,否则添加一个新的子元素。

方法set也有七种重载版本,addAll有三种重载版本,分别适用于不同的情况。

四、获取与检测JsonObject子元素

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

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

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

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

五、确定JsonObject子元素是否存在

在获取子元素前可能无法确定JsonObject是否包含指定Name的子元素,要确定子元素存在,请调用方法containsName(String)。

六、删除JsonObject子元素

删除JsonObject的子元素调用方法remove(String),参数为要删除的子元素的Name。

七、获取JsonObject子元素相关的集合

与Map一样,JsonObject也是由无序的Name Value对构成,为此,JsonObject实现了三个方法用于获取子元素相关的集合。

entrySet(),返回由子元素的Name Value对构成的集合。

nameSet(),返回由子元素的Name构成的集合。

values(),返回由子元素的Value构成的集合。

分享到:
评论

相关推荐

    操纵JsonObject的方法.pdf

    获取 `JsonObject` 中特定子元素的值,可以使用 `get` 方法,它返回一个 `Json` 实例,其类型可以通过 `getType` 方法确定。`getString` 方法用于获取指定名称子元素的字符串值。如果子元素的值是 `JsonPrimitive` ...

    创建JSONObject的四个常用方法

    ### 创建JSONObject的四个常用方法 在Java开发过程中,处理JSON数据是常见的需求之一。而`json-lib.jar`作为一款老牌且功能强大的JSON处理库,在Java社区有着广泛的应用基础。本文将详细介绍基于`json-lib.jar`包...

    jsonobject

    `JSONObject`提供了一系列的方法来添加、获取、修改和删除键值对。 要使用`JSONObject`,首先需要在项目中引入对应的jar包。根据描述,这里提供了必要的6个包,这些包可能包括了`org.json`库的核心类、解析器以及...

    java的JsonObject对象提取值方法

    这里,`JSON.parseObject()` 方法用于将JSON字符串转换为`JsonObject`,`getJSONArray()` 用于获取指定键对应的`JsonArray`,而 `getString()` 则用于从`JsonObject`中提取字符串值。 接下来是第二种格式的JSON数据...

    org.json.JSONObject 包下载

    在实际开发中,熟练掌握`JSONObject`的使用方法能极大地提高开发效率,并确保数据交换的准确性和一致性。在下载`json.jar`后,只需将其导入到项目类路径中,就可以开始使用`JSONObject`提供的功能了。

    android jsonobject.tobean方法

    在web中的jsonobject有个直接可以tobean的方法用起来非常方便,可android没有,所以通过反射机制学习web中的jsonobject写了一个jsonobject的tobean,方便使用.

    JSONObject及依赖的jar包

    下面我们将详细探讨`JSONObject`的使用方法和相关知识点。 1. 创建JSONObject - 从JSON字符串构造:你可以通过调用`JSONObject(String jsonString)`构造函数,传入一个有效的JSON字符串来创建`JSONObject`。 - 从...

    JAVA JSONObject Jar包

    这个`JAVA JSONObject Jar包`包含了处理JSON对象所需的类和方法。 JSONObject是org.json库中的核心类,它允许我们创建、读取和修改JSON对象。JSON对象以键值对的形式存储数据,类似于Java中的HashMap。下面我们将...

    JsonObject

    JsonObject是Java编程语言中用于处理JSON(JavaScript Object Notation)数据的一个重要类,它来自于Gson库。Gson是Google提供的一个开源库,主要用于在Java对象和JSON数据之间进行映射,使得Java对象可以轻松地转换...

    jsonobject.zip

    还可以通过get方法获取键对应的值,通过put方法修改或添加键值对,通过toString方法将JSONObject转换为字符串,等等。JSONObject还支持嵌套的对象和数组操作,使你能处理复杂的JSON结构。 总之,"jsonobject.zip...

    JsonObject(免分)

    2. **添加键值对**:使用`put()`方法向JsonObject中添加键值对,键必须是字符串,值可以是各种类型,包括基本类型、字符串、其他JsonObject或JsonArray。 ```java jsonObject.put("key", "value"); ``` 3. **获取值...

    JSONObject对象依赖的jar包

    `JSONObject`还提供了许多其他方法,如`get()`, `opt()`, `put()`, `has()`, `remove()`等,它们可以帮助你访问、检查或修改JSON对象的属性。同时,`JSONObject`可以与`JSONArray`配合使用,处理JSON数组中的数据。 ...

    org.json.JSONObject引用依赖包

    `org.json.JSONObject` 是`org.json`包中的核心类,它提供了一系列的方法来操作JSON对象。 `JSONObject`类允许我们将Java对象转换为JSON表示,并将JSON数据转换回Java对象。以下是一些关键知识点: 1. **创建...

    net.sf.json.JSONObject对象使用指南

    可以通过`JSONObject.fromObject(String jsonStr)`或`JSONArray.fromObject(String jsonStr)`方法实现。 - **与Spring框架集成**:在Spring框架中,可以利用`@RequestBody`和`@ResponseBody`注解方便地处理JSON数据...

    JSONObject相关依赖架包

    在Java开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换...这样,你就可以在代码中调用如`JSONArray.parseArray(String json)`、`JSONObject.fromObject(Object obj)`等方法,轻松地进行JSON操作了。

    JSONObject相关jar包和maven管理jar包

    3. **使用JSONObject**:例如,可以使用`new JSONObject()`创建一个空的JSONObject,使用`put()`方法添加键值对,`getString()`、`getInt()`等方法获取数据,`toString()`方法将对象转化为JSON字符串。 4. **Maven...

    net.sf.json.JSONObject依赖jar

    一旦将这个依赖包导入到项目中,你就可以使用`JSONObject.fromObject()`方法,这是一个非常重要的功能,它允许你将Java对象转换为JSON表示形式。 描述中提到的"JSONObject.fromObject()"方法是...

Global site tag (gtag.js) - Google Analytics