json学习系列(6)JSONObject和JSONArray是JDK的集合部分延伸

我一直觉得JSONObject和JSONArray是JDK集合部分的延伸,它们与JDK的List和Map一脉相承。通过研究JSONObject和JSONArray的结构,我们顺便也复习一下JDK的内容。
首先看一下JSONObject和JSONArray 的结构:

final class JSONObject extends AbstractJSON implements JSON, Map, Comparable
final class JSONArray extends AbstractJSON implements JSON, List, Comparable

首先看看JSON接口:JSON extends Serializable,这一点表明JSONObject和JSONArray是可以实现序列化的。JSON接口的具体的定义也是针对很常用的功能:

boolean isArray();
boolean isEmpty();
int size();//对于JSONObject来说是Bean属性的个数,对于JSONArray来说是Bean的个数
String toString( int indentFactor );
String toString( int indentFactor, int indent );
Writer write( Writer writer );

接着看一下Map接口:

int size();
boolean isEmpty();
boolean containsKey(Object key);
boolean containsValue(Object value);
V get(Object key);
V put(K key, V value);
V remove(Object key);
void putAll(Map<? extends K, ? extends V> m);
void clear();
Set<K> keySet();
Collection<V> values();
Set<Map.Entry<K, V>> entrySet();

上面的一个函数引出了另外一个接口:Entry<K,V>
再接着看一下List接口:

interface List<E> extends Collection<E>
Interface Collection<E> extends Iterable<E>

在List接口中要注意:

ListIterator<E> listIterator();
ListIterator<E> listIterator(int index);

ListIterator接口实现了前后移动的功能。比Iterator接口的功能更强大。

时间: 2024-08-10 07:05:50

json学习系列(6)JSONObject和JSONArray是JDK的集合部分延伸的相关文章

JSONObject和JSONArray是JDK的集合部分延伸

我一直觉得JSONObject和JSONArray是JDK集合部分的延伸,它们与JDK的List和Map一脉相承.通过研究JSONObject和JSONArray的结构,我们顺便也复习一下JDK的内容.首先看一下JSONObject和JSONArray 的结构: 1 final class JSONObject extends AbstractJSON implements JSON, Map, Comparable 2 final class JSONArray extends Abstrac

json学习系列(8)JSON与JAVA数据的相互转换实例

一.完整案例 先定义一个java实体对象,如下: package com.pcitc.json.cnblog; /** * SimInfo实体对象 * * @Description * @author admin * @created 2015年6月30日 上午10:23:21 * @version * @history * @see */ public class SimInfo { private String addTime; private String iccid; private i

json处理简解[JSONObject、JSONArray]

json处理目前有已经成熟使用的jar能够支持相关处理,json-lib 常用方法为put.putAll.addput方法传参为:key.value/jsonObject 支持json对象赋值和包装子json串(即json串赋值中value值可以为一个json对象)putAll方法传参为:jsonObject 支持json对象赋值(将一个json对象直接赋值给另外一个)add方法传参为数组位置和数组对象add(int index, Object value) soapui使用示例: json对象

json学习系列(3)-JSONObject的过滤设置

我们通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值.例如下面的实体类: package com.pcitc.json; /** * Person实体类 * * @Description * @author admin * @created 2015年6月29日 下午4:08:40 * @version * @history * @see */ public class Person { private String name; private String add

json学习系列(2)-生成JSONObject的方法

生成JSONObject一般有两种方式,通过javabean或者map类型来生成.如下面的例子: 先定义一个User实体类: package com.pcitc.json; /** * 用户实体类 * * @Description * @author admin * @created 2015年6月29日 下午3:43:15 * @version * @history * @see */ public class User { public String username; public Str

复杂json的解析:jsonobject与jsonArray的使用

String parameter = { success : 0, errorMsg : "错误消息", data : { total : "总记录数", rows : [ { id : "任务ID", workName : "任务名称", assigneeName : "经办人姓名", name : "流程步骤名称", processInstanceInitiatorName : &q

json学习系列(5)-json错误解析net.sf.ezmorph.bean.MorphDynaBean cannot be cast to

最近在使用json的时候,报了下面的错误: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to java.lang.String 这种错误非常常见,因为json转化为javabean的时候,默认为MorphDynaBean类的.如下面的例子: 在json字符串转javabean时,一般的对象,可以直接转,如:一个学生类,属性有姓名.年龄等. public class Student implements java.io.Serializable

json学习系列(7)JSONBuilder的用法

JSONBuilder可以向文件中写入写入json字符串.如下面的例子: public class Test { public static void main(String args[]) throws IOException { File f = new File("d:" + File.separator + "test.txt"); FileWriter fw = new FileWriter(f); JSONBuilder builder = new JS

json学习系列(4)-JSONString对象的optXXX方法的使用

在JSONObject获取value有多种方法,如果使用 getXxx()类型的方法获取value,如getString("key").如果key不存在的话,这些方法无一例外的都会抛出异常.如果在线环境抛出异常,就会使出现error页面,影响用户体验,针对这种情况最好是使用JSONObject的optXXX方法. 来看一下几个getXxx()方法的源代码实现: getString:如果key不存在,getString方法会抛出异常,如下所示: public String getStri