- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用下面的代码将 JSON 数据合并到模板中,以获取 HTML:
模板:
String schema = "<h1>{{header}}</h1>"
+ "{{#bug}}{{/bug}}"
+ "{{#items}}"
+ "{{#first}}"
+ "<li><strong>{{title}}</strong>
+ </li>"
+ "{{/first}}"
+ "{{#link}}"
+ "<li><a href=\"{{url}}\">{{name}}
+ </a></li>"
+ "{{/link}}"
+ "{{/items}}"
+ "{{#empty}}"
+ "<p>The list is empty.</p>"
+ "{{/empty}}";
JSON 对象:
try {
String template = "{\"header\": \"Colors\", "
+ "\"items\": [ "
+ "{\"name\": \"red\", \"first\": true, \"url\": \"#Red\"}, "
+ "{\"name\": \"green\", \"link\": true, \"url\": \"#Green\"}, "
+ "{\"name\": \"blue\", \"link\": true, \"url\": \"#Blue\"}"
+ " ], \"empty\": false }";
JSONObject jsonWithArrayInIt = new JSONObject(template);
JSONArray items = jsonWithArrayInIt.getJSONArray("items");
Map<String,String> ctx = new HashMap<String,String>();
ctx.put("foo.bar", "baz");
Mustache.compiler().standardsMode(true).compile("{{foo.bar}}").execute(ctx);
System.out.println("itemised: " + items.toString());
} catch(JSONException je) {
//Error while creating JSON.
}
我传递数据映射以使 Mustache 工作。该方法如下所示:
public static Map<String, Object> toMap(JSONObject object)
throws JSONException {
Map<String, Object> map = new HashMap();
Iterator keys = object.keys();
while (keys.hasNext()) {
String key = (String) keys.next();
map.put(key, fromJson(object.get(key)));
}
return map;
}
我正在关注 Mustache Guide获得 mustache 自动形成。但我不知道如何获得我期望的结果。输出应如下所示:
<h1>Colors</h1>
<li><strong></strong></li>
<li><a href="#Green">green</a></li>
<li><a href="#Blue">blue</a></li>
最佳答案
我认为您需要稍微重新考虑您的 Mustache 模板。 jMustache 库(我假设您正在使用)似乎总是将 {{#
实体视为列表并迭代它们的内容,而不管传入的数据类型如何。
像这样的东西应该可以工作:
<h1>{{header}}</h1>
{{#items}}
<li>
{{#url}}<a href="{{.}}">{{/url}}
{{^url}}<strong>{{/url}}
{{caption}}
{{#url}}</a>{{/url}}
{{^url}}</strong>{{/url}}
</li>
{{/items}}
{{^items}}
<p>The list is empty.</p>
{{/items}}
仅当提供“链接”值时才会生成 HTML anchor ,从而避免 jMustache if 条件问题。所以 JSON 模型看起来像这样:
{
"header": "Colors",
"items": [
{"caption": "title"},
{"caption": "red", "url": "#Red"},
{"caption": "green", "url": "#Green"},
{"caption": "blue", "url": "#Blue"}
]
}
最后,您需要将 JSON 转换为 jMustache 可以理解的格式。我从未在我使用过的任何库中看到或听说过“HTTPFunctions”类,但我过去曾使用 Gson 完成过一些类似的映射。请注意,这是一个非常简单的实现,您可能需要对其进行扩展以满足您的需要:
private Map<String, Object> getModelFromJson(JSONObject json) throws JSONException {
Map<String,Object> out = new HashMap<String,Object>();
Iterator it = json.keys();
while (it.hasNext()) {
String key = (String)it.next();
if (json.get(key) instanceof JSONArray) {
// Copy an array
JSONArray arrayIn = json.getJSONArray(key);
List<Object> arrayOut = new ArrayList<Object>();
for (int i = 0; i < arrayIn.length(); i++) {
JSONObject item = (JSONObject)arrayIn.get(i);
Map<String, Object> items = getModelFromJson(item);
arrayOut.add(items);
}
out.put(key, arrayOut);
}
else {
// Copy a primitive string
out.put(key, json.getString(key));
}
}
return out;
}
这个基本的 JUnit 测试演示了理论:http://www.pasteshare.co.uk/p/841/
关于java - 使用 Mustache 模板,传递 JSON 并转换为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15543379/
我正在尝试将 Mustache 与 requireJS 和 jQuery 一起使用,由于 Chrome 的控制台输出正确,它似乎正在加载到浏览器中: >$.mustache
我想弄清楚 mustache 中的偏音是如何工作的。 JS var mustacheTmpl = Mustache.render(popups, {list:true}); 弹出模板 {{#list}
我想知道是否有比我当前解决以下问题更优雅的解决方案 问题:在以下情况下,使用 Mustache 从动态数组生成动态表: 总列数未知 只有一两个列名是已知的,必须有条件地呈现 不得使用辅助函数 数据仅以
我开始查看一些 mustache 模板,但遇到了一些我不理解/无法找到解释的东西。 {{#something}}word-here={{.}}{{/something}} 有人能帮我理解什么{{.}}
我有一个代码,它呈现了一个带有一些迭代的 mustache 模板,例如: {{#items}} some html code.... {{/items}} 但我想将渲染的项目数放入迭代中,如下所示
我正在使用 Mustache 2.7.0 并第一次尝试使用 Blocks pragma。 基本上,我称之为basic.mustache {{ {{$ title}
我在文本文件中的 mustache 标签是例如“{{foo}}”。 我传递的值有一个嵌入的换行符:“aaaa\nbbbb”。 我想要的行为是输出具有: aaaa bbbb 但相反,它是 aaaa
我有如下的 JSON 字符串 { Red:10, Green: 0 } 所以我想显示以下行 10 次(如 Red: 10 ) 我如何使用 Mustache 做到这一点? 我试过了 {{# R
在 JavaScript 中: falsy: false, null, undefined, 0, -0, NaN, "" truthy: everything else, including []
我们如何在 mustache 上写以下内容? 我想检查一个变量是否存在,如果存在,我想检查该变量是否等于另一个变量。所以 这将是 PHP 等价物 if ($example && $example ==
我有一个使用 Mustache 模板的服务器渲染表单。提交表单时,如果出现错误,我会重新显示表单以及一些错误。我希望使用提交的相同值重新填充字段。 但是,我不确定如何从选择列表中标记正确的项目。这是我
我正在尝试使 Mustache JS 输出内容而不解析一些变量。例如: {{block.type}}-{{block.id}}-label-{{element.id}} 我希望它只解析 block ,
我正在使用 Mustache templating library 并尝试生成一个没有尾随逗号的逗号分隔列表,例如 red, green, blue 给定结构,使用尾随逗号创建列表很简单 { "i
我正在使用Mustache templating library并尝试生成一个逗号分隔的列表,没有尾随逗号,例如 red, green, blue 根据结构,创建带有尾随逗号的列表非常简单 { "
我正在将电子邮件模板从 Mandrill 移至 Postmark,这需要将 Handlebars 转换为 Mustachio。在 Handlebars 我有这样的事情: {{#if some_vari
是否可以检查 mustache js 中的特定值,例如 {{name}} == "James" ? 数据: json: { name: "James" } HTML: {{name}} //W
我在命令行上使用 Mustache 将 JSON 对象嵌入到 中HTML 对象中的标签。 cat sampleData.json | mustache - man_report.mustache >
我正在尝试使用 mustache 模板来呈现非常简单的表单,但是,其中一个表单具有一组单选按钮。我不知道如何在呈现表单时选择正确的单选按钮。 这是很简单的东西,我只是错过了一些东西,还是 mustac
是否有一个简单的、独立的、可移植的、现有的用于 Windows 的 Mustache 发行版,它可以让我完全按照 mustache(1) 中指定的(或尽可能接近)调用 Mustache手动的? cat
我正在尝试做这样的事情,但我不知道该怎么做: 我有一个名为 {{dropdown_}} 的 mustache 参数,另一个名为 {{number}} 我想做的是这样的: {{dropdown_{{nu
我是一名优秀的程序员,十分优秀!