Dotliquid使用Json模板变量
2024-08-29 12:32:27
Dotliquid是不错的Template Engine,为了更方便使用,扩展了一下,使它支持json数据的替换,引用了Newtonsoft.Json.Linq
/// <summary>
/// 从JObject创建模板变量
/// </summary>
/// <param name="jsonObject"></param>
/// <returns></returns>
protected Hash FromJson(JObject jsonObject)
{
if (jsonObject == null) return null;
var hash = new Hash();
foreach (JProperty item in jsonObject.Children())
{
if (item.HasValues && item.Type == JTokenType.Property)
{
switch (item.Value.Type)
{
case JTokenType.Object:
var jObj = item.Value as JObject;
if (jObj != null)
hash.Add(item.Name, FromJson(jObj));
break;
case JTokenType.Array:
var jArray = item.Value as JArray;
if (jArray != null)
hash.Add(item.Name, FromJson(jArray));
break;
case JTokenType.String:
case JTokenType.Integer:
case JTokenType.Date:
case JTokenType.Boolean:
case JTokenType.Float:
case JTokenType.Guid:
case JTokenType.TimeSpan:
case JTokenType.Uri:
JValue value = item.Value as JValue;
if (value != null)
hash.Add(item.Name, value.Value);
break;
}
}
}
return hash;
}
/// <summary>
/// 从JArray创建模板变量
/// </summary>
/// <param name="jsonArray"></param>
/// <returns></returns>
protected List<Hash> FromJson(JArray jsonArray)
{
if (jsonArray == null) return null;
var listHash = new List<Hash>();
for (int i = ; i < jsonArray.Count; i++)
{
var item = (JObject)jsonArray[i];
var value = FromJson(item);
if (value != null)
{
listHash.Add(FromJson(item));
}
}
return listHash;
}
最新文章
- yii2的分页和ajax分页
- Java_Map_Map详解
- hadoop 集群跑的时候用到hbasejar 文件的引用问题
- 初识Spring框架
- 用IIS配置反向代理
- (转)MySQL命令行--导入导出数据库
- Sublime text 3安装svn插件
- hdu2067
- 基于jquery的inputlimiter 实现字数限制功能
- hdu 4746 Mophues 莫比乌斯反演+前缀和优化
- iOS 容易引“起循环引用”的三种场景
- 浏览器 HTTP 缓存原理分析
- JSP的学习(4)——中文乱码的解决
- ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇
- vue+webpack构建项目
- ios的虚拟键盘与fixed移动端的bug
- MySQL锁类型以及子查询锁表问题、解锁
- SoDiaoEditor电子病历编辑器更新至V3版本,愿与各位一路同行!
- [译] 理解 LSTM 网络
- Python_Mix*内置函数