• Dotliquid使用Json模板变量


    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 = 0; i < jsonArray.Count; i++)
                {
                    var item = (JObject)jsonArray[i];
                    var value = FromJson(item);
                    if (value != null)
                    {
                        listHash.Add(FromJson(item));
                    }
                }
                return listHash;
            }
  • 相关阅读:
    linux系统安装Mysql
    makefile通用模板
    makefile常用函数
    mysqlconnector安装
    linux添加默认路由route
    .h文件与.hpp文件的区别
    ubuntu20优化开机启动
    [javascript]js原型链以及原型链继承
    webpack4.*入门笔记
    图像编程:图片大小关系
  • 原文地址:https://www.cnblogs.com/keo2013/p/3294543.html
Copyright © 2020-2023  润新知