6.1 开发入门:第一个json
新建一个扩展名json的文件,如one.json(下图)
然后录入如下内容
{"item":{
<chtml>
<!-- 数据准备部分,您可以从数据库中查询 -->
<bag id=item suffix=0>
<we name=name>土豆</we>
<we name=price>1.24</we>
<we name=unit>KG</we>
</bag>
<bag id=item suffix=1>
<we name=name>T恤</we>
<we name=price>68</we>
<we name=unit>件</we>
</bag>
<bag id=item suffix=2>
<we name=name>可乐</we>
<we name=price>2.20</we>
<we name=unit>瓶</we>
</bag>
<bag id=item suffix=3>
<we name=name>书</we>
<we name=price>51.24</we>
<we name=unit>本</we>
</bag>
</chtml>
<chtml>
<!-- 正式json格式的内容 -->
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
</chtml>
},"sort":@{int:@{item:getSuffix}+1}
}
在EditPlus的效果如下图
用浏览器查看的效果如下图
例子文件_samples/app/one.json在_samples/app/目录下
6.2 开发提高
请学习同一下载包中的开发手册中的基本标签语言及表达式
6.3 精通移动App应用服务程序开发
熟悉轻开平台针对移动App(json格式)的规则及开发例子
除了基本开发标签语言及表达式(参见同一下载包中的开发手册)外,轻开平台特别针对移动App最常用的json文本格式开发的对应规则:
文件扩展名须为json(如:one.json)或用JspEasy扩展
文件内容须为闭合的json格式,静态内容则可直接书写json格式,如:
{“item”:
{
<chtml>
… …
</chtml>
},”other”:”other value”
}
value属性参数表示输出不带引号的值,如:
<price value>@{item:price}</price>
输出:"price":51.24
list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等)
<for bags=item end="@{item:getLength}">
<item list="@{item:getSuffix}" end="@{item:getLength}">
<!-- list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等) -->
<name>@{item:name}</name>
<price value>@{item:price}</price>
<unit>@{item:unit}</unit>
</item>
</for>
nolast属性参数表示数组后边输出一个逗号
<for bags=item end="@{item:getLength}">
<item list="@{item:getSuffix}" end="@{item:getLength}" nolast>
<!-- list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等), nolast属性参数表示数组后边输出一个逗号-->
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
</item>
</for>
<tatol>@{item:getLength}</tatol><!-- 前边的nolast就是用于在这组前边输出一个逗号 -->
nokey属性参数表示不输出数组名称
<for bags=item end="@{item:getLength}">
<item list="@{item:getSuffix}" end="@{item:getLength}" nokey>
<!-- list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等), nokey属性参数表示不输出数组名称-->
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
</item>
</for>
无名称数组直接累成字符串输出即可
<chtml>
<!-- 正式json格式的内容,无名称数组直接累成字符串输出即可 -->
<for bags=item end="@{item:getLength}">
<if x="@{item:getSuffix}" else=1>
<bag id=pPage x=0><we name=name>"@{item:name}"</we></bag>
<bag id=pPage><we name=name>@{pPage:name},"@{item:name}"</we></bag>
</if>
</for>
</chtml>[@{pPage:name}]
空数组直接输出:
[]
下边将结合实例进行学习
6.3.1 输出Bag中的一条记录
闭合的json格式内容
{“item”:
{
<chtml>
… …
</chtml>
},"sort":@{int:@{item:getSuffix}+1}
}
与内层的标签运行结果共同组织一个完整的json格式文本输出到App
初始化Bag中的记录(您也可以从数据库中查询)
<bag id=item suffix=0>
<we name=name>土豆</we>
<we name=price>1.24</we>
<we name=unit>KG</we>
</bag>
<bag id=item suffix=1>
<we name=name>T恤</we>
<we name=price>68</we>
<we name=unit>件</we>
</bag>
<bag id=item suffix=2>
<we name=name>可乐</we>
<we name=price>2.20</we>
<we name=unit>瓶</we>
</bag>
<bag id=item suffix=3>
<we name=name>书</we>
<we name=price>51.24</we>
<we name=unit>本</we>
</bag>
输出其中的一条
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
value属性参数表示输出不带引号的值
结果
{"item":{
"name":"书","price":51.24,"unit":"本"},"sort":4
}
完整代码
{"item":{
<chtml>
<!-- 数据准备部分,您可以从数据库中查询 -->
<bag id=item suffix=0>
<we name=name>土豆</we>
<we name=price>1.24</we>
<we name=unit>KG</we>
</bag>
<bag id=item suffix=1>
<we name=name>T恤</we>
<we name=price>68</we>
<we name=unit>件</we>
</bag>
<bag id=item suffix=2>
<we name=name>可乐</we>
<we name=price>2.20</we>
<we name=unit>瓶</we>
</bag>
<bag id=item suffix=3>
<we name=name>书</we>
<we name=price>51.24</we>
<we name=unit>本</we>
</bag>
</chtml>
<chtml>
<!-- 正式json格式的内容 -->
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
</chtml>
},"sort":@{int:@{item:getSuffix}+1}
}
例子文件_samples/app/one.json在_samples/app/目录下
6.3.2 输出Bag中的所有记录为一个json数组
闭合的json格式内容
{“item”:
{
<chtml>
… …
</chtml>
} ,"tatol":@{item:getLength}
}
与内层的标签运行结果共同组织一个完整的json格式文本输出到App
初始化Bag中的记录
同上
(您也可以从数据库中查询,如)
<esql module=help id=item>Select ID,Subject,Writer,DayTime,Body From Messages</esql>
输出Bag中的所有记录
<for bags=item end="@{item:getLength}">
<item list="@{item:getSuffix}" end="@{item:getLength}">
<!-- list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等) -->
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
</item>
</for>
list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等)
结果
{"items":{
"item":[{"name":"土豆","price":1.24,"unit":"KG"},{"name":"T恤","price":68,"unit":"件"},{"name":"可乐","price":2.20,"unit":"瓶"},{"name":"书","price":51.24,"unit":"本"}]},"tatol":4
}
完整代码
{"items":{
<chtml>
<!-- 数据准备部分,您可以从数据库中查询 -->
<bag id=item suffix=0>
<we name=name>土豆</we>
<we name=price>1.24</we>
<we name=unit>KG</we>
</bag>
<bag id=item suffix=1>
<we name=name>T恤</we>
<we name=price>68</we>
<we name=unit>件</we>
</bag>
<bag id=item suffix=2>
<we name=name>可乐</we>
<we name=price>2.20</we>
<we name=unit>瓶</we>
</bag>
<bag id=item suffix=3>
<we name=name>书</we>
<we name=price>51.24</we>
<we name=unit>本</we>
</bag>
</chtml>
<chtml>
<!-- 正式json格式的内容 -->
<for bags=item end="@{item:getLength}">
<item list="@{item:getSuffix}" end="@{item:getLength}">
<!-- list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等) -->
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
</item>
</for>
</chtml>
},"tatol":@{item:getLength}
}
例子文件_samples/app/one_array.json在_samples/app/目录下
6.3.3 nolast属性(输出Bag中的所有记录为一个json数组)
闭合的json格式内容
同上
初始化Bag中的记录
同上
输出Bag中的所有记录,并在数组后边输出一个逗号
<for bags=item end="@{item:getLength}">
<item list="@{item:getSuffix}" end="@{item:getLength}" nolast>
<!-- list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等), nolast属性参数表示数组后边输出一个逗号-->
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
</item>
</for>
<tatol>@{item:getLength}</tatol><!-- 前边的nolast就是用于在这组前边输出一个逗号 -->
nolast属性参数表示数组后边输出一个逗号,表示数组后边还有同层标签需要输出
结果
{"items":{
"item":[{"name":"土豆","price":1.24,"unit":"KG"},{"name":"T恤","price":68,"unit":"件"},{"name":"可乐","price":2.20,"unit":"瓶"},{"name":"书","price":51.24,"unit":"本"}],"tatol":"4"}
}
完整代码
{"items":{
<chtml>
<!-- 数据准备部分,您可以从数据库中查询 -->
<bag id=item suffix=0>
<we name=name>土豆</we>
<we name=price>1.24</we>
<we name=unit>KG</we>
</bag>
<bag id=item suffix=1>
<we name=name>T恤</we>
<we name=price>68</we>
<we name=unit>件</we>
</bag>
<bag id=item suffix=2>
<we name=name>可乐</we>
<we name=price>2.20</we>
<we name=unit>瓶</we>
</bag>
<bag id=item suffix=3>
<we name=name>书</we>
<we name=price>51.24</we>
<we name=unit>本</we>
</bag>
</chtml>
<chtml>
<!-- 正式json格式的内容 -->
<for bags=item end="@{item:getLength}">
<item list="@{item:getSuffix}" end="@{item:getLength}" nolast>
<!-- list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等), nolast属性参数表示数组后边输出一个逗号-->
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
</item>
</for>
<tatol>@{item:getLength}</tatol><!-- 前边的nolast就是用于在这组前边输出一个逗号 -->
</chtml>
}
}
例子文件_samples/app/one_array_nolast.json在_samples/app/目录下
6.3.4 nokey属性(输出Bag中的所有记录为一个json数组)
闭合的json格式内容
不需要
初始化Bag中的记录
同上
输出Bag中的所有记录,不输出数组名称
<for bags=item end="@{item:getLength}">
<item list="@{item:getSuffix}" end="@{item:getLength}" nokey>
<!-- list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等), nokey属性参数表示不输出数组名称-->
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
</item>
</for>
nokey属性参数表示不输出数组名称
结果
[{"name":"土豆","price":1.24,"unit":"KG"},{"name":"T恤","price":68,"unit":"件"},{"name":"可乐","price":2.20,"unit":"瓶"},{"name":"书","price":51.24,"unit":"本"}]
完整代码
<chtml>
<!-- 数据准备部分,您可以从数据库中查询 -->
<bag id=item suffix=0>
<we name=name>土豆</we>
<we name=price>1.24</we>
<we name=unit>KG</we>
</bag>
<bag id=item suffix=1>
<we name=name>T恤</we>
<we name=price>68</we>
<we name=unit>件</we>
</bag>
<bag id=item suffix=2>
<we name=name>可乐</we>
<we name=price>2.20</we>
<we name=unit>瓶</we>
</bag>
<bag id=item suffix=3>
<we name=name>书</we>
<we name=price>51.24</we>
<we name=unit>本</we>
</bag>
</chtml>
<chtml>
<!-- 正式json格式的内容 -->
<for bags=item end="@{item:getLength}">
<item list="@{item:getSuffix}" end="@{item:getLength}" nokey>
<!-- list属性参数表示输出为数组列表格式,end属性参数表示数组结束的位置(跟for的end值相等), nokey属性参数表示不输出数组名称-->
<name>@{item:name}</name>
<price value>@{item:price}</price><!-- value属性参数表示输出不带引号的值 -->
<unit>@{item:unit}</unit>
</item>
</for>
</chtml>
例子文件_samples/app/array_nokey.json在_samples/app/目录下
6.3.5 输出Bag中的所有记录为一个只有值的json数组
闭合的json格式内容
不需要
初始化Bag中的记录
同上
把Bag中的所有记录的name值累加成一个字符串
<for bags=item end="@{item:getLength}">
<if x="@{item:getSuffix}" else=1>
<bag id=pPage x=0><we name=name>"@{item:name}"</we></bag>
<bag id=pPage><we name=name>@{pPage:name},"@{item:name}"</we></bag>
</if>
</for>
只输出值的数组直接累加成字符串输出即可
输出
[@{pPage:name}]
结果
["土豆","T恤","可乐","书"]
完整代码
<chtml>
<!-- 数据准备部分,您可以从数据库中查询 -->
<bag id=item suffix=0>
<we name=name>土豆</we>
<we name=price>1.24</we>
<we name=unit>KG</we>
</bag>
<bag id=item suffix=1>
<we name=name>T恤</we>
<we name=price>68</we>
<we name=unit>件</we>
</bag>
<bag id=item suffix=2>
<we name=name>可乐</we>
<we name=price>2.20</we>
<we name=unit>瓶</we>
</bag>
<bag id=item suffix=3>
<we name=name>书</we>
<we name=price>51.24</we>
<we name=unit>本</we>
</bag>
</chtml>
<chtml>
<!-- 正式json格式的内容,只输出值的数组直接累成字符串输出即可 -->
<for bags=item end="@{item:getLength}">
<if x="@{item:getSuffix}" else=1>
<bag id=pPage x=0><we name=name>"@{item:name}"</we></bag>
<bag id=pPage><we name=name>@{pPage:name},"@{item:name}"</we></bag>
</if>
</for>
</chtml>[@{pPage:name}]
例子文件_samples/app/array_only_value.json在_samples/app/目录下
6.3.6 输出无名称的空值数组
直接输出
[]
例子文件_samples/app/array_null.json在_samples/app/目录下