Dotliquid JSON Преобразование с использованием JSON.net - PullRequest
0 голосов
/ 10 мая 2018

Я заинтересован в выполнении преобразований JSON и изучал использование dotliquid.

Чтобы не иметь POCO для входного JSON, просто чтобы можно было отправлять его как переменную, я хотел бы отправить десериализованный JSON. Насколько я понимаю, мы не можем отправить динамический метод рендеринга, и JObject или JArray не работают должным образом. Я попытался десериализовать в словарь , но он не мог обработать вложенные структуры 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 для вложенного словаря, или какие есть альтернативы?

1 Ответ

0 голосов
/ 25 марта 2019

Вы можете заставить его работать, используя DictionaryConverter из Рекурсивно десериализовать JSON в IDictionary и Hash.FromDictionary

var json = JsonConvert.DeserializeObject<IDictionary<string, object>>(@"{ ""names"":[{""name"": ""John""},{""name"":""Doe""}]  }", new DictionaryConverter());
var jsonHash = Hash.FromDictionary(json);
var templatetest = "<h1>{{device}}</h1><h2>{{speed}}</h2>{% for client in names %}<h4>{{client.name}}</h4>{% endfor %}";

var template = Template.Parse(templatetest);
var render = template.Render(jsonHash);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...