作为所有Json实例的基类Json定义了操作Json实例的通用方法,下面将一一介绍。
一、输出Json文本
要把Json实例转换为字符串,可以调用Json类的方法generateJsonText,这个方法有两个重载版本,带参数的与不带参数的。带参数的generateJsonText(boolean)让你自己决定JsonObject子元素的Name部分是否用引号括起来,不带参数的版本相当于参数为false的情况,只是转换失败时仅返回一个空指针而不抛出异常。
Json类还重写toString方法,toString方法等同于不带参数的generateJsonText()。
在Servlet编程中,直接把Json文本输出到Response的Writer对象更方便。为此,Json类实现了outputToWriter方法,这个方法也有两个重载版本,分别是outputToWriter(PrintWriter, boolean)与outputToWriter(PrintWriter, boolean)。outputToWriter方法的第二个参数与generateJsonText方法的参数意义一致,第一个参数的区别是用PrinteWriter时不会抛出必须捕获的IOException,而用Writer时必须处理IOException。
二、Json实例的通用方法
Json实例通用的方法有下面几个:
-
-
- isEmtpy:判断Json实例是否包含子元素。
- count:Json实例子元素的个数。
- clear:清除Json实例所有的子元素。
- getType:返回Json实例的类型。
- existsCircle:Json实例内是否存在循环引用,如果存在会导致输出文本异常。
-
三、Json实例的相等性判断
Json类重写了equals方法,只要两个Json实例所表示的数据一致(即类型一致、子元素的个数一致且对应相等,对于JsonPrimitive来讲是自身的值相等)就返回true,而不管在内存中的映像是否一致。
Json类也重写了作为与equals配对使用的方法hashCode,只要equals方法返回true,hashCode肯定返回相同的值。
四、克隆Json实例
Json类也重写了方法clone,能够实现Json实例的深度克隆,即无论如何修改被克隆出的Json实例(即使修改子元素的子元素),都不会影响原Json实例的值。