#JSON对象模型

com.yashandb.json包中定义了YashanDB当前支持的JSON对象模型类型。

# 章节导航

# 使用顺序

开发者通常按以下顺序使用JSON对象模型:

  1. 使用YasonFactory或具体类型的构造方法创建YasonValue对象。
  2. 使用YasonObject或YasonArray组织对象和数组结构。
  3. 使用类型对应的读取方法获取Java值,或调用YasonValue.toString()获取JSON文本。
  4. 需要写入数据库时,通过PreparedStatement.setObject绑定对象;需要读取数据库JSON列时,通过ResultSet.getObject获取对象。

各类型的构造方法和读取方法请参考上方章节导航中的具体类型文档。

# 类型对应关系

YasonType code JSON类型对象模型 含义
YASON_OBJECT 1 YasonObject json标准类型,表示json的Object类型。
YASON_ARRAY 2 YasonArray json标准类型,表示json的Array类型。
YASON_STRING 3 YasonString json标准类型,表示json的字符串类型。
YASON_NUMBER 4 YasonDecimal json标准类型,表示json的数字类型。
YASON_BOOLEAN 5 YasonBoolean json标准类型,表示json的布尔类型。
YASON_NULL 6 YasonNull json标准类型,表示json的null类型。
YASON_BYTE 7 YasonByte json扩展类型,是对json的数字类型的细分,对应-128~127范围内的整数类型。
YASON_SHORT 8 YasonShort json扩展类型,是对json的数字类型的细分,对应java的short类型。
YASON_INT 9 YasonInt json扩展类型,是对json的数字类型的细分,对应java的int类型。
YASON_BIGINT 10 YasonLong json扩展类型,是对json的数字类型的细分,对应java的long类型。
YASON_FLOAT 11 YasonFloat json扩展类型,是对json的数字类型的细分,对应java的float类型。
YASON_DOUBLE 12 YasonDouble json扩展类型,是对json的数字类型的细分,对应java的double类型。
YASON_BINARY 13 YasonBinary json扩展类型,表示二进制类型,对应java里面的byte数组。
YASON_TIMESTAMP 14 YasonTimestamp json扩展类型,对应java里面的Timestamp类型。
YASON_DATE 15 YasonDate json扩展类型,对应java里面的Date类型。
YASON_TIME 16 YasonTime json扩展类型,对应java里面的Time类型。

注意:其中3~16的这些类型都为非标量类型,创建后它所包含的值就不可修改。

上面16种对象模型都继承自YasonValue父级接口,YasonValue包含如下方法:

返回类型 方法 备注
YasonType getType() 获取json类型。
int getDepth() throws SQLException 获取json深度,深度超过100会抛出异常。
Object getValue() 获取json内部实际的值。
String getString() 获取json的值的字符串形式。
byte[] getBinaryData() throws SQLException 获取json编码成的二进制数据。
String toString() 获取json格式的字符串。

# 对象模型使用示例

下面示例创建一个JSON对象,向其中加入字符串、数字和数组值,并使用YasonGenerator生成JSON文本。该示例只操作驱动对象模型,不连接数据库。

import com.yashandb.json.YasonArray;
import com.yashandb.json.YasonFactory;
import com.yashandb.json.YasonGenerator;
import com.yashandb.json.YasonObject;

import java.io.StringWriter;

public class JsonObjectModelExample {
    public static void main(String[] args) {
        YasonFactory factory = new YasonFactory();
        YasonObject customer = factory.createObject();
        customer.put("name", "Alice");
        customer.put("score", 95);

        YasonArray tags = factory.createArray();
        tags.add("jdbc");
        tags.add("json");
        customer.put("tags", tags);

        System.out.println(customer.getString("name"));
        System.out.println(customer);

        StringWriter writer = new StringWriter();
        YasonGenerator generator =
                factory.createJsonTextGenerator(writer);
        generator.writeStartObject()
                .write("name", "Alice")
                .write("score", 95)
                .writeEnd();
        generator.close();
        System.out.println(writer);
    }
}

正常情况下,程序输出如下:

Alice {"name":"Alice","tags":["jdbc","json"],"score":95} {"name":"Alice","score":95}

edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流