我在做一个休息模拟服务。我用DotLiquid。我想从XML和JSON将POST正文解析为一个对象。
DotLiquid适用于匿名类型,如
var input = new
{
Body = new { Foos = new[] { new{ Bar = "OneBar" }, new { Bar = "TwoBar" } } }
};
var template = Template.Parse(@"{% for item in Body.Foos %}
{{ item.Bar }}
{% endfor %}");
Console.WriteLine(template.Render(Hash.FromAnonymousObject(input)));
Console.ReadLine();输出:
OneBar TwoBar
但是,对JObject做同样的操作并不会输出任何内容。
var json = "{ 'Foos': [{ 'Bar': 'OneBar' }, { 'Bar': 'TwoBar' }] }";
var input = new
{
Body = JObject.Parse(json)
};
var template = Template.Parse(@"{% for item in Body.Foos %}
{{ item.Bar }}
{% endfor %}");
Console.WriteLine(template.Render(Hash.FromAnonymousObject(input)));
Console.ReadLine();发布于 2019-08-31 01:12:23
看来在DotLiquid中没有对JSON的直接支持
首先获取newtonsoft.json库并反序列化json;如下所示
var obj = JsonConvert.DeserializeObject<ExpandoObject>(jsonObject, expConverter);Expando实现了DotLiquid支持的IDictionary。或者,做清单
var model = JsonConvert.DeserializeObject<List<string>>(json);https://stackoverflow.com/questions/57398039
复制相似问题