org.test4j.json.encoder
类 JSONEncoder<T>

java.lang.Object
  继承者 org.test4j.json.encoder.JSONEncoder<T>
直接已知子类:
ArrayEncoder, ObjectEncoder, PropertyEncoder, SingleEncoder, SpecEncoder

public abstract class JSONEncoder<T>
extends Object

json串加码器基类
解码:从json字符串反序列为java对象
加码:将java对象序列化为json字符串

作者:
darui.wudr

字段摘要
protected  Class clazz
           
protected  int features
           
protected  boolean ignoreExplicitFieldType
           
protected  char quote_Char
          json引号变量
单引号或双引号
protected  boolean skipNullField
           
protected  boolean unMarkClassFlag
          是否输出class类型
 
构造方法摘要
JSONEncoder(Class clazz)
           
 
方法摘要
abstract  boolean encode(T target, Writer writer, List<String> references)
          将java对象序列化为json字符串
static JSONEncoder get(Class clazz)
           
 void setFeatures(int features)
           
 void setFeatures(JSONFeature... jsonFeatures)
           
 void setUnMarkClassFlag(boolean unMarkClassFlag)
          显示设置是否忽略输出class类型名称
一般只有Field字段编码时会用到
用于当Field.type = 实际对象类型时,可以选择忽略输出class类型名称
protected  RuntimeException wrapException(Throwable e)
           
protected  boolean writeClassFlag(T target, Writer writer)
          标记class类型名称
protected  boolean writerNullOrReference(Object value, Writer writer, List<String> references, boolean isMarkRef)
          对象是null,或者引用了另外一个已经序列化的对象
protected  void writerSpecProperty(String name, Writer writer)
          输出特定属性名称或值
如果声明了QuoteFieldNames特性输出 "propertyname" 或 'propertyname'
否则直接输出 propertyname
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

features

protected int features

clazz

protected Class clazz

quote_Char

protected char quote_Char
json引号变量
单引号或双引号


unMarkClassFlag

protected boolean unMarkClassFlag
是否输出class类型


ignoreExplicitFieldType

protected boolean ignoreExplicitFieldType

skipNullField

protected boolean skipNullField
构造方法详细信息

JSONEncoder

public JSONEncoder(Class clazz)
方法详细信息

setFeatures

public void setFeatures(int features)

setUnMarkClassFlag

public void setUnMarkClassFlag(boolean unMarkClassFlag)
显示设置是否忽略输出class类型名称
一般只有Field字段编码时会用到
用于当Field.type = 实际对象类型时,可以选择忽略输出class类型名称


setFeatures

public void setFeatures(JSONFeature... jsonFeatures)

encode

public abstract boolean encode(T target,
                               Writer writer,
                               List<String> references)
将java对象序列化为json字符串

参数:
object - 要序列化的对象
writer - 序列化字符串输出器
返回:
TODO

get

public static JSONEncoder get(Class clazz)

writerNullOrReference

protected boolean writerNullOrReference(Object value,
                                        Writer writer,
                                        List<String> references,
                                        boolean isMarkRef)
                                 throws IOException
对象是null,或者引用了另外一个已经序列化的对象

参数:
value - 要序列化的对象
writer -
references - 已序列化的对象地址标识列表
isMarkRef - 是否增加对象地址标识, 下列情形下不标识:
o 简单对象
o 有时不标识是为了防止多个地方调用结果自己引用了自己, 如果EntryEncoder中会判断一遍,再转到普通对象中编码
返回:
是否已经输出了null值或者ref值
抛出:
IOException

writerSpecProperty

protected void writerSpecProperty(String name,
                                  Writer writer)
                           throws IOException
输出特定属性名称或值
如果声明了QuoteFieldNames特性输出 "propertyname" 或 'propertyname'
否则直接输出 propertyname

参数:
name -
writer -
抛出:
IOException

writeClassFlag

protected boolean writeClassFlag(T target,
                                 Writer writer)
                          throws IOException
标记class类型名称

参数:
writer -
返回:
抛出:
IOException

wrapException

protected RuntimeException wrapException(Throwable e)


Copyright © 2013. All rights reserved.