C# 如何使Mustache逻辑标记功能化

C# 如何使Mustache逻辑标记功能化,c#,json,tags,mustache,nustache,C#,Json,Tags,Mustache,Nustache,我目前正在使用C#创建/解析一个JSON文件,然后用它填充一个小胡子模板 我已经使用Nustache的NuGet包将Nustache安装到VB中 我的JSON文件如下所示: { "LinkName": "test", "TESTBOOL": true, "NodeProfileENUM": "TEST", "Requester": false, "Responder": false, "Nodes": { "Root": { "nodeName": "

我目前正在使用C#创建/解析一个JSON文件,然后用它填充一个小胡子模板

我已经使用Nustache的NuGet包将Nustache安装到VB中

我的JSON文件如下所示:

{
  "LinkName": "test",
  "TESTBOOL": true,
  "NodeProfileENUM": "TEST",
  "Requester": false,
  "Responder": false,
  "Nodes": {
    "Root": {
      "nodeName": "Root",
      "displayName": null,
      "type": null,
      "initialValue": null,
      "serializable": null,
      "className": null,
      "enumName": null,
      "isLast": true,
      "actionList": {}
    }
  },
  "LinkActions": {}
}
string nodeProfileFormat = File.ReadAllText("NodeProfileTemplate2.txt");

JObject parsedLinkTest = 
JObject.Parse(File.ReadAllText("LinkDefinitionTest.json"));

string nodeProfileResultTest = 
Nustache.Core.Render.StringToString(nodeProfileFormat, parsedLinkTest);

File.WriteAllText("NodeProfileTemplateResult.java", nodeProfileResultTest);
在我的模板中,我尝试使用如下标记:

{{#TESTBOOl}} test {{/TESTBOOL}}
但我一直收到一个错误,说块没有注册

我还尝试了遍历节点部分:

{{#each Nodes}}
{{#each this}}
{{this.nodeName}}
{{/each}}
{{/each}}
但这也不起作用

我正在解析和呈现json和模板(C#),如下所示:

{
  "LinkName": "test",
  "TESTBOOL": true,
  "NodeProfileENUM": "TEST",
  "Requester": false,
  "Responder": false,
  "Nodes": {
    "Root": {
      "nodeName": "Root",
      "displayName": null,
      "type": null,
      "initialValue": null,
      "serializable": null,
      "className": null,
      "enumName": null,
      "isLast": true,
      "actionList": {}
    }
  },
  "LinkActions": {}
}
string nodeProfileFormat = File.ReadAllText("NodeProfileTemplate2.txt");

JObject parsedLinkTest = 
JObject.Parse(File.ReadAllText("LinkDefinitionTest.json"));

string nodeProfileResultTest = 
Nustache.Core.Render.StringToString(nodeProfileFormat, parsedLinkTest);

File.WriteAllText("NodeProfileTemplateResult.java", nodeProfileResultTest);

有什么我忘记做的吗?

要测试模板,请使用。如果您修复了输入错误,则TESTBOOL模板可以正常工作:

{{#TESTBOOL}} test {{/TESTBOOL}}
如果要显示
nodeName
,必须执行以下操作:

{{Nodes.Root.nodeName}}
json只包含一个对象。您的节点不是数组。也许您正在寻找迭代属性

关于您的C#,您可以使用nustach
FileToFile
方法:

var parsedLinkTest = JObject.Parse(File.ReadAllText("LinkDefinitionTest.json"));
Nustache.Core.Render.FileToFile("NodeProfileTemplate2.txt", parsedLinkTest, "NodeProfileTemplateResult.java");
如果失败,请使用调试器检查
parsedLinkTest
是否已正确填充