我对执行 JSON 转换很感兴趣,并研究了使用 dotliquid。
为了避免输入 JSON 的 POCO 只是为了能够将其作为变量发送,我想发送反序列化的 JSON。据我了解,我们无法将动态发送到渲染方法,并且 JObject 或 JArray 无法按预期工作。我尝试反序列化到 Dictionary< string, object>,但这无法处理嵌套的 JSON 结构。
液体
[
{%- for p in data.names -%}
{
"name" : {{ p.name }}
} {%- unless forloop.Last == true -%},{% endunless %}
{%- endfor -%}
]
C# 代码
Template template = Template.Parse(File.ReadAllText("Maps/account.liquid"));
var json = JsonConvert.DeserializeObject<Dictionary<string, object>>(
@"{ ""names"":[{""name"": ""John""},{""name"":""Doe""}] }");
var jsonHash = Hash.FromAnonymousObject(new { Data = json});
输出
[
{
"name" :
},
{
"name" :
}
]
我知道 Microsoft Logic Apps 已经使用 dotliquid 实现了类似的功能。https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-enterprise-integration-liquid-transform
有哪些不同的方式?我是否需要将 JObject/JArray 解析为嵌套字典,或者有什么替代方法?