XCO

1. XCO简介

XCO(XSON common object)是一种通用的数据对象, 底层采用一种类似Map的数据结构进行数据的存储访问,

能够方便的以XML和Byte[]的方式对数据对象进行序列化和反序列化,适合同构、异构系统之间的数据传输和交换。

2. XCO生态圈

xco-java:XCO Java版本;

xco-c:XCO C语言版本;

3. 支持的数据类型

8种基本类型(byte, boolean, short, int, long, float, double, char)和其包装类型

8种基本类型数组

String

String数组

String集合

java.util.Date

java.sql.Date

java.sql.Time

java.sql.Timestamp

BigInteger

BigDecimal

XCO

XCO数组

XCO集合

4. 版本maven使用

当前最新版本:1.0.4

maven中使用

org.xson

common-object

1.0.4

5. 更新说明

1.0.4

调整取值策略,先整体取值,后OGNL取值

增加序列化时的字段过滤

1.0.3版本

增加append方法

1.0.2版本

支持Ognl表达式取值

增加getValue相关方法

增加remove方法

增加byte[]相关的序列化和反序列化操作

增加getData方法

6. 常用方法

a. 赋值

public final void setIntegerValue(String field, int var)

设置一个int类型的值, field为key

public final void setStringValue(String field, String var)

设置一个String类型的值, field为key

//setXxx

b. 取值

public final int getIntegerValue(String field)

获取一个int类型的值, field为key

public final String getStringValue(String field)

获取一个String类型的值, field为key

//getXxx

c. 序列化

public String toXMLString()

把XCO对象以XML方式进行序列化

public static XCO fromXML(String xml)

从一个XML字符串反序列化为XCO对象

public String toJSON()

把XCO对象以JSON方式进行序列化

public byte[] toBytes() {

把XCO对象以byte[]方式进行序列化

public byte[] toBytes(int offsetLength)

把XCO对象以byte[]方式进行序列化,并保留偏移内容

public static XCO fromBytes(byte[] buffer)

从byte[]反序列化为XCO对象

public static XCO fromBytes(byte[] buffer, int offsetLength)

从byte[]的指定偏移长度开始,反序列化为XCO对象

7. 整合XSON

XCO对象的toBytes和fromBytes方法需要XSON框架支持,具体的使用操作如下:

a. 添加Maven依赖

org.xson

xson

1.0.2

b. 编辑xson.properties配置文件

# Support for XCO

xco=true

7. 使用示例

XCO xco = new XCO();

// 设置基本类型

xco.setByteValue("byteVal", (byte) 3);

xco.setBooleanValue("booleanVal", true);

xco.setShortValue("shortVal", (short) 5);

xco.setIntegerValue("intVal", 2);

xco.setLongValue("longVal", 2L);

xco.setFloatValue("floatVal", 2.0F);

xco.setDoubleValue("doubleVal", -0.3D);

xco.setCharValue("charVal", 'x');

// 设置对象类型

xco.setStringValue("stringVal", "hello world");

xco.setDateTimeValue("dateTimeVal", new java.util.Date());

xco.setDateValue("dateVal", new java.sql.Date(System.currentTimeMillis()));

xco.setTimeValue("TimeVal", new java.sql.Time(System.currentTimeMillis()));

xco.setBigIntegerValue("bigIntegerVal", new BigInteger("1380000"));

xco.setBigDecimalValue("bigDecimal", new BigDecimal("1380000.9999"));

xco.setXCOValue("xcoVal", new XCO());

// 设置数组

xco.setIntegerArrayValue("intArray", new int[] { 1, 3, 5, 8 });

xco.setStringArrayValue("stringArray", new String[] { "aa", "bb", "cc" });

// 设置集合

List list = new ArrayList();

xco.setStringListValue("stringList", list);

Set set = new TreeSet();

xco.setStringSetValue("stringSet", set);

// 序列化为XML字符串

String xml = xco.toXMLString();

// 从XML字符串反序列化

XCO newXco = XCO.fromXML(xml);

// 序列化为byte[]

byte[] buffer = xco.toBytes();

// 从byte[]反序列化

XCO newXco1 = XCO.fromBytes(buffer);

// 取值

byte byteVal = xco.getByteValue("byteVal");

boolean booleanVal = xco.getBooleanValue("booleanVal");

short shortVal = xco.getShortValue("shortVal");

int intVal = xco.getIntegerValue("intVal");

long longVal = xco.getLongValue("longVal");

float floatVal = xco.getFloatValue("floatVal");

double doubleVal = xco.getDoubleValue("doubleVal");

String stringVal = xco.getStringValue("stringVal");

XCO xcoVal = xco.getXCOValue("xcoVal");

8. XML表示

上面使用示例中的XCO对象xco的XML表示如下:

说明

a. 以此为例:

H: 数据类型标识,当前标示short类型

K: key

V: 具体数值

b. 数据类型标识说明

B: byte

H: short

I: int

L: Long

F: float

D: double

C: char

O: boolean

S: String

X: xco

A: date

E: sql.date

G: sql.time

J: sql.timestamp

K: bigInteger

M: bigDecimal

..

其他详见:org.xson.common.object.DataType

9. 类图

10. 官方网站

11. 沟通交流

QQ群:518522232**(请备注关注的项目)**

java中x--与--x_GitHub - xsonorg/xco: XSON Common Object相关推荐

  1. java中是否支持多重继承_java支持多重继承吗 JAVA特性面试题:

    1.简要介绍java程序的健壮性. 答:JAVA程序会在编译和运行的时候自动的检测可能出现的错误,而且它是一种强类型语言,对于类型的检查很严格,而且它的垃圾回收机制也有效的避免了内存的泄漏. 2.为什 ...

  2. java中synchronized的用法详解

    记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ...

  3. JAVA中深拷贝与浅拷贝(在网上找到的) 希望对于理解深拷贝与浅拷贝有帮助...

     什么是clone? 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就 ...

  4. java中的祖先类_Java程序公共祖先类-Object

    在Java中,所有的类都继承自Object类,它是所有的始祖,但是我们不需要显示的书写extends Object. equals方法 在JDK中,Object类的equals方法的实现如下: pub ...

  5. C#和Java中“==”和“equals”区别

    C#中"=="和"equals"区别如下: 1 using System; 2 class Program 3 { 4 public static void M ...

  6. Java里面as_与Java中的C#关键字“ as”等效

    在Java中,如果转换失败,是否可以尝试进行转换并返回null? public static < T > T as(Class< T > t, Object o) { retu ...

  7. Java中的Object类和Class类

    Copyright©Stonee 在Java中,无论是类还是接口,它们在JVM的内存逻辑模型中都会存在Super和Class指针,分别指向根类(Object类)和反射类(Class类) 在这一篇blo ...

  8. java中long比较大小_java中Long类型比较大小和long类型的比较大小java中Long类型比较大小和long类型的比较大小...

    今天遇到这样一个问题,我用 "=="来比较两个Long类型的数据,明明数值都相等,可是结果就是false 这要说到==和 equals 的区别了. 1. ==比较的是两个对象在内存 ...

  9. 快速解决java中的容器

    首先已知java中任何类都有一个共同的父类,那就是Object类.若定义一个Object类数组,理论上可以涵盖任何类的数据.例如: public static void main(String[] a ...

最新文章

  1. 2020年数据中心行业研究报告
  2. 启明云端分享|直接用ESP32-S2和ESP32-C3驱动1.54寸串口屏,有哪些区别呢,他们的亮点又有哪些呢
  3. [洛谷P4012] [网络流24题] 深海机器人问题
  4. php 将多个数组 相同的键重组,PHP – 合并两个类似于array_combine但具有重复键的数组...
  5. flex 下对齐_Flex 布局示例
  6. 快速下载助手1.1--添加断点下载
  7. 诗歌,一路走来...
  8. QQ抢车位外挂(起始篇)--小研究成果展示
  9. 笔记6:Django基础
  10. CentOS 安装nload(流量统计)
  11. Centos yum安装snmp
  12. SHA256算法原理及其实现
  13. 人全外显子组测序WES学习笔记 第一天
  14. SAP ABAP GUI_DOWNLOAD中下载乱码的问题
  15. 实现简单的通信协议(STM32 F411RET6开发版)
  16. php类中遍历中的rewind方法,PHP rewind( )用法及代码示例
  17. led显示屏十大品牌
  18. .NET基础篇:解决VS2017引用无效问题。
  19. 无法连接到服务器的错误解决方案
  20. Java面试--Java内存模型

热门文章

  1. 在Ubuntu/Linux环境下开放3306端口
  2. 从虚拟化前端Bug学习分析Kernel Dump
  3. 程序开发语言之兵器谱排名
  4. 数胎动可辨别宝宝是不是缺氧
  5. Spark GraphX 图算法的理解
  6. 命令行运行ktr和kjb
  7. 读书笔记||控制论、信息论、系统论
  8. 解决了bridge到blender的2个问题(导入+材质)
  9. (转)05、Win7上openSSH的安装与配置
  10. 用计算机算3次根号0.00005,使用ORCA在TDDFT下计算旋轨耦合矩阵元和绘制旋轨耦合校正的UV-Vis光谱...