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;
}

最新文章

  1. yii2的分页和ajax分页
  2. Java_Map_Map详解
  3. hadoop 集群跑的时候用到hbasejar 文件的引用问题
  4. 初识Spring框架
  5. 用IIS配置反向代理
  6. (转)MySQL命令行--导入导出数据库
  7. Sublime text 3安装svn插件
  8. hdu2067
  9. 基于jquery的inputlimiter 实现字数限制功能
  10. hdu 4746 Mophues 莫比乌斯反演+前缀和优化
  11. iOS 容易引“起循环引用”的三种场景
  12. 浏览器 HTTP 缓存原理分析
  13. JSP的学习(4)——中文乱码的解决
  14. ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇
  15. vue+webpack构建项目
  16. ios的虚拟键盘与fixed移动端的bug
  17. MySQL锁类型以及子查询锁表问题、解锁
  18. SoDiaoEditor电子病历编辑器更新至V3版本,愿与各位一路同行!
  19. [译] 理解 LSTM 网络
  20. Python_Mix*内置函数

热门文章

  1. oracle_恢复流程图
  2. 通过私有协议Chrome浏览器页面打开本地程序
  3. 64bit Centos6.4编hadoop-2.5.1
  4. Oracle缓存机制
  5. api接口对于客户端的身份认证方式以及安全措施
  6. 【转】Uiautomator Api浅析
  7. OracleServiceORCL服务不见了怎么办
  8. cocos2d-x plist在拍照
  9. 自动引用计数(ARC)
  10. SICP 锻炼 (1.45)解决摘要