【更新】完善json,lua 数据源文档
parent
21a745a4f7
commit
4f0addec89
|
|
@ -3,6 +3,67 @@
|
||||||
|
|
||||||
# json 数据源
|
# json 数据源
|
||||||
|
|
||||||
|
## json数据格式
|
||||||
|
|
||||||
|
|
||||||
|
大多数数据格式填法符合直觉,有几个数据类型的格式比较特殊:
|
||||||
|
- set类型。填法为 [v1,v2,...]
|
||||||
|
- map类型。由于json只支持string类型的key,因此map格式填法为 [[k1,v1],[k2,v2]...]
|
||||||
|
- 多态bean类型。需要 \_\_type\_\_ 属性来指定具体类型名。
|
||||||
|
|
||||||
|
不同数据结构在json中格式示例如下:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<bean name="DemoType2" >
|
||||||
|
<var name="x4" type="int"/>
|
||||||
|
<var name="x1" type="bool"/>
|
||||||
|
<var name="x5" type="long"/>
|
||||||
|
<var name="x6" type="float"/>
|
||||||
|
<var name="x7" type="double"/>
|
||||||
|
<var name="x10" type="string"/>
|
||||||
|
<var name="x12" type="DemoType1"/>
|
||||||
|
<var name="x13" type="DemoEnum"/>
|
||||||
|
<var name="x14" type="DemoDynamic"/>
|
||||||
|
<var name="v2" type="vector2"/>
|
||||||
|
<var name="v3" type="vector3"/>
|
||||||
|
<var name="v4" type="vector4"/>
|
||||||
|
<var name="t1" type="datetime"/>
|
||||||
|
<var name="k1" type="array,int"/>
|
||||||
|
<var name="k2" type="list,int"/>
|
||||||
|
<var name="k8" type="map,int,int"/>
|
||||||
|
<var name="k9" type="list,DemoE2"/>
|
||||||
|
<var name="k15" type="array,DemoDynamic" />
|
||||||
|
</bean>
|
||||||
|
```
|
||||||
|
|
||||||
|
示例json文件内容如下
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"x1":true,
|
||||||
|
"x2":3,
|
||||||
|
"x3":128,
|
||||||
|
"x4":1,
|
||||||
|
"x5":11223344,
|
||||||
|
"x6":1.2,
|
||||||
|
"x7":1.23432,
|
||||||
|
"x10":"hq",
|
||||||
|
"x12": { "x1":10},
|
||||||
|
"x13":"B",
|
||||||
|
"x14":{"__type__": "DemoD2", "x1":1, "x2":2},
|
||||||
|
"v2":{"x":1, "y":2},
|
||||||
|
"v3":{"x":1.1, "y":2.2, "z":3.4},
|
||||||
|
"v4":{"x":10.1, "y":11.2, "z":12.3, "w":13.4},
|
||||||
|
"t1":"1970-01-01 00:00:00",
|
||||||
|
"k1":[1,2],
|
||||||
|
"k2":[2,3],
|
||||||
|
"k7":[2,3],
|
||||||
|
"k8":[[2,2],[4,10]],
|
||||||
|
"k9":[{"y1":1, "y2":true},{"y1":2, "y2":false}],
|
||||||
|
"k15":[{"__type__": "DemoD2", "x1":1, "x2":2}]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## 以复合json文件形式组织
|
## 以复合json文件形式组织
|
||||||
|
|
||||||
整个表以一个或者多个json文件的形式组织。在table的input属性中手动指定json数据源,有以下几种格式:
|
整个表以一个或者多个json文件的形式组织。在table的input属性中手动指定json数据源,有以下几种格式:
|
||||||
|
|
@ -40,57 +101,23 @@
|
||||||
```
|
```
|
||||||
|
|
||||||
## 以目录树形式组织
|
## 以目录树形式组织
|
||||||
典型用法是,以目录为数据源(会遍历整棵目录树),目录树下每个json文件为一个记录,读入。
|
典型用法是,以目录为数据源(会遍历整棵目录树),目录树下每个json文件为一个记录读入。
|
||||||
|
|
||||||
|
如下,递归遍历test/json_datas整个目录树,**按文件名排序后**依次将每个json数据当作一个记录读入。
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<bean name="DemoType2" >
|
|
||||||
<var name="x4" type="int" convert="DemoEnum"/>
|
|
||||||
<var name="x1" type="bool"/>
|
|
||||||
<var name="x5" type="long" convert="DemoEnum"/>
|
|
||||||
<var name="x6" type="float"/>
|
|
||||||
<var name="x7" type="double"/>
|
|
||||||
<var name="x10" type="string"/>
|
|
||||||
<var name="x12" type="DemoType1"/>
|
|
||||||
<var name="x13" type="DemoEnum"/>
|
|
||||||
<var name="x14" type="DemoDynamic" sep=","/>多态数据结构
|
|
||||||
<var name="v2" type="vector2"/>
|
|
||||||
<var name="v3" type="vector3"/>
|
|
||||||
<var name="v4" type="vector4"/>
|
|
||||||
<var name="t1" type="datetime"/>
|
|
||||||
<var name="k1" type="array,int"/> 使用;来分隔
|
|
||||||
<var name="k2" type="list,int"/>
|
|
||||||
<var name="k8" type="map,int,int"/>
|
|
||||||
<var name="k9" type="list,DemoE2" sep="," index="y1"/>
|
|
||||||
<var name="k15" type="array,DemoDynamic" sep=","/>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
<table name="TbDataFromJson" value="DemoType2" input="test/json_datas"/>
|
<table name="TbDataFromJson" value="DemoType2" input="test/json_datas"/>
|
||||||
```
|
```
|
||||||
|
|
||||||
递归遍历test/json_datas整个目录树,**按文件名排序后**依次将每个json数据当作一个记录读入。其中1.json文件内容如下
|
## 数据tag
|
||||||
|
与excel格式类似,json格式支持记录tag,用 \_\_tag\_\_ 属性来指明tag,示例如下:
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"x1":true,
|
"__tag__":"dev",
|
||||||
"x2":3,
|
"x":1,
|
||||||
"x3":128,
|
"y":2
|
||||||
"x4":1,
|
|
||||||
"x5":11223344,
|
|
||||||
"x6":1.2,
|
|
||||||
"x7":1.23432,
|
|
||||||
"x10":"hq",
|
|
||||||
"x12": { "x1":10},
|
|
||||||
"x13":"B",
|
|
||||||
"x14":{"__type__": "DemoD2", "x1":1, "x2":2},
|
|
||||||
"v2":{"x":1, "y":2},
|
|
||||||
"v3":{"x":1.1, "y":2.2, "z":3.4},
|
|
||||||
"v4":{"x":10.1, "y":11.2, "z":12.3, "w":13.4},
|
|
||||||
"t1":"1970-01-01 00:00:00",
|
|
||||||
"k1":[1,2],
|
|
||||||
"k2":[2,3],
|
|
||||||
"k7":[2,3],
|
|
||||||
"k8":[[2,2],[4,10]],
|
|
||||||
"k9":[{"y1":1, "y2":true},{"y1":2, "y2":false}],
|
|
||||||
"k15":[{"__type__": "DemoD2", "x1":1, "x2":2}]
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,44 +3,40 @@
|
||||||
|
|
||||||
# Lua 数据源
|
# Lua 数据源
|
||||||
|
|
||||||
## 以复合lua文件形式组织
|
## json数据格式
|
||||||
|
|
||||||
整个表在一个或者多个lua文件中组织。用法与json数据源相似,参见 [json数据源](./data_json.md)
|
大多数数据格式符合直觉,有几个特殊点:
|
||||||
|
* 数据前有一个return,这是因为 lua 数据是当作 lua 文件加载的,每个加载后的结果当作一个记录读入。
|
||||||
|
* set 的格式为 {v1, v2, ...}
|
||||||
|
* 与json不同,lua 的table的key支持任意格式,所以lua的map可以直接 {[key1] = value1, [key2] = value2, ,,,}
|
||||||
|
|
||||||
## 以目录树形式组织
|
|
||||||
|
|
||||||
* 与 json 相似定义。
|
定义
|
||||||
* 唯一区别在于, lua 的table的key支持任意格式,所以 lua 的map 可以直接 {[key1] = value1, [key2] = value2, ,,,}
|
|
||||||
* 
|
|
||||||
* 注意 数据前有一个 return 语句。因为 lua 数据是当作 lua 文件加载的,每个加载后的结果当作一个记录读入。
|
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<bean name="DemoType2" >
|
<bean name="DemoType2" >
|
||||||
<var name="x4" type="int" convert="DemoEnum"/>
|
<var name="x4" type="int"/>
|
||||||
<var name="x1" type="bool"/>
|
<var name="x1" type="bool"/>
|
||||||
<var name="x5" type="long" convert="DemoEnum"/>
|
<var name="x5" type="long"/>
|
||||||
<var name="x6" type="float"/>
|
<var name="x6" type="float"/>
|
||||||
<var name="x7" type="double"/>
|
<var name="x7" type="double"/>
|
||||||
<var name="x10" type="string"/>
|
<var name="x10" type="string"/>
|
||||||
<var name="x12" type="DemoType1"/>
|
<var name="x12" type="DemoType1"/>
|
||||||
<var name="x13" type="DemoEnum"/>
|
<var name="x13" type="DemoEnum"/>
|
||||||
<var name="x14" type="DemoDynamic" sep=","/>多态数据结构
|
<var name="x14" type="DemoDynamic"/>
|
||||||
<var name="v2" type="vector2"/>
|
<var name="v2" type="vector2"/>
|
||||||
<var name="v3" type="vector3"/>
|
<var name="v3" type="vector3"/>
|
||||||
<var name="v4" type="vector4"/>
|
<var name="v4" type="vector4"/>
|
||||||
<var name="t1" type="datetime"/>
|
<var name="t1" type="datetime"/>
|
||||||
<var name="k1" type="array,int"/> 使用;来分隔
|
<var name="k1" type="array,int"/>
|
||||||
<var name="k2" type="list,int"/>
|
<var name="k2" type="list,int"/>
|
||||||
<var name="k8" type="map,int,int"/>
|
<var name="k8" type="map,int,int"/>
|
||||||
<var name="k9" type="list,DemoE2" sep="," index="y1"/>
|
<var name="k9" type="list,DemoE2"/>
|
||||||
<var name="k15" type="array,DemoDynamic" sep=","/>
|
<var name="k15" type="array,DemoDynamic" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<table name="TbDataFromLua" value="DemoType2" input="test/lua_datas"/>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
递归遍历test/lua_datas整个目录树,**按文件名排序后**依次将每个lua数据当作一个记录读入。其中1.lua文件内容如下
|
示例数据
|
||||||
|
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
return
|
return
|
||||||
|
|
@ -67,3 +63,26 @@ return
|
||||||
k15 = { { __type__="DemoD2", x1 = 1, x2=3} },
|
k15 = { { __type__="DemoD2", x1 = 1, x2=3} },
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 以复合lua文件形式组织
|
||||||
|
|
||||||
|
整个表在一个或者多个lua文件中组织。用法与json数据源相似,参见 [json数据源](./data_json.md)
|
||||||
|
|
||||||
|
## 以目录树形式组织
|
||||||
|
|
||||||
|
典型用法是,以目录为数据源(会遍历整棵目录树),目录树下每个lua文件为一个记录读入。如下示例,递归遍历test/lua_datas整个目录树,**按文件名排序后**依次将每个lua数据当作一个记录读入。
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<table name="TbDataFromLua" value="DemoType2" input="test/lua_datas"/>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 数据tag
|
||||||
|
与excel格式类似,也支持记录tag,用 \_\_tag\_\_ 属性来指明tag,示例如下:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
return {
|
||||||
|
__tag__ = "dev",
|
||||||
|
x = 1,
|
||||||
|
y = 2,
|
||||||
|
}
|
||||||
|
```
|
||||||
Loading…
Reference in New Issue