mirror of https://github.com/alibaba/fastjson2.git
add design doc
This commit is contained in:
parent
75bd98fee4
commit
e19a5b9294
|
@ -0,0 +1,22 @@
|
||||||
|
JSONReader是fastjson2读取JSON数据的底层实现,为了方便不同的输入,分别提供了如下实现:
|
||||||
|
|
||||||
|
* JSONReaderUTF16 用于处理输入为char[]的输入,在JDK8下, String会转成char[],使用JSONReaderUTF16实现;在JDK 9或者更高版本,如果coder=1,也是会使用这个实现。
|
||||||
|
* JSONReaderUTF8 用于处理输入为utf8编码的byte[]
|
||||||
|
* JSONReaderASCII是JSONReaderUTF8的派生类,用于处理JDK 9之后coder=0的优化
|
||||||
|
* JSONReaderJSONB 如果输入是jsonb格式数据时,使用JSONReaderJSONB实现,通过相同的API实现两套协议,一套API
|
||||||
|
|
||||||
|
```java
|
||||||
|
class JSONReader { }
|
||||||
|
|
||||||
|
class JSONReaderUTF16 extends JSONReader {
|
||||||
|
char[] chars;
|
||||||
|
}
|
||||||
|
|
||||||
|
class JSONReaderUTF8 extends JSONReader {
|
||||||
|
byte[] bytes;
|
||||||
|
}
|
||||||
|
|
||||||
|
class JSONReaderASCII extends JSONReaderUTF8 { }
|
||||||
|
|
||||||
|
class JSONReaderJSONB extends JSONReader {}
|
||||||
|
```
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
JSONWriter是fastjson2序列化的底层实现,针对toJSONString和toJSONByte两种场景,会使用JSONWriterUTF8和JSONWriterUTF16两种实现。
|
||||||
|
|
||||||
|
* JSONWriterUTF16 当使用JSON.toJSONString时,缺省使用JSONWriterUTF16。
|
||||||
|
* JSONWriterUTF8 当使用JSON.toJSONByte时,缺省使用JSONWriterUTF8,在使用JSON.toJSONString结合JSONWriter.Feature.OptimizedForAscii使用时,也会用JSONWriterUTF8实现。
|
||||||
|
* JSONWriterPretty 当JSONWriter.Feature.PrettyFormat启用时,会使用JSONWriterPretty包装一个JSONWriter实现
|
||||||
|
* JSONWriterJSONB 如果序列化的结果是jsonb格式,使用JSONWriterJSONB实现,通过相同的API实现两套协议,一套API
|
||||||
|
|
||||||
|
```java
|
||||||
|
class JSONWriter { }
|
||||||
|
|
||||||
|
class JSONWriterUTF8 extends JSONWriter { }
|
||||||
|
|
||||||
|
class JSONWriterUTF16 extends JSONWriter { }
|
||||||
|
|
||||||
|
final class JSONWriterPretty extends JSONWriter {
|
||||||
|
JSONWriter jsonWriter;
|
||||||
|
|
||||||
|
JSONWriterPretty(JSONWriter jsonWriter) {
|
||||||
|
this.jsonWriter = jsonWriter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class JSONWriterJSONB extends JSONWriter { }
|
||||||
|
```
|
Loading…
Reference in New Issue