【发布时间】:2017-05-21 08:13:53
【问题描述】:
我正在一个 Java 类中生成一个 JavaScript 对象以在 javascript 中使用,结果如下所示:
var gridDefinition = {"width":"100%",
"height":700,
"sortable":true,
"columns"[{"datafield":"id","datatype":"string","width":300,"hidden":true,"text":"ID"},
{"datafield":"lastname","datatype":"string","cellsrenderer":"renderer_openEntry","width":300,"text":"Nachname"},
{"datafield":"firstname","datatype":"string","width":200,"text":"Vorname"},
{"datafield":"officePhoneNumber","datatype":"string","width":150,"text":"Telefon"},
{"datafield":"companyName","datatype":"string","width":300,"text":"Firma"},
{"datafield":"mailServer","datatype":"string","width":200,"text":"Mail-Server"},
{"datafield":"mailFile","datatype":"string","width":400,"text":"Mail-Datei"}]} ;
cellsrenderer 是一个回调函数名。如何删除 renderer_link 周围的双引号?结果行应如下所示:
{"datafield":"lastname","datatype":"string","cellsrenderer":renderer_openEntry,"width":300,"text":"Nachname"},
【问题讨论】:
-
如果您删除引号,那么它不再是 JSON。您需要在 Javascript 中对这个解析的 JSON 对象进行后处理,将包含函数名称的字符串解析为实际的函数引用。您能否提供更多上下文,以便我们为您提供具体代码?
-
@deceze 这不是 JSON,而且从来都不是。它实际上是一个 JavaScript 对象,被分配给一个变量。
-
“我怎样才能去掉 renderer_link 周围的双引号?” 如果我告诉你没有引号怎么办?在执行时,
gridDefinition是一个对象,gridDefinition.columns[x].cellsrenderer是一个 string 值。那时没有可以“删除”的引号。您基本上是在询问如何将字符串的值解释为变量名。唯一明智的答案是有一个映射,将名称/字符串映射到变量并在该映射中查找值。 -
@meagar 我知道。我认为 OP 正在生成 JSON 并将其打印到他们的 JS 源中。我是说如果他们想“删除引号”,他们将无法做到这一点,因为那时它不是 JSON,他们不能简单地将其插入 JS 源代码,他们必须动态改为生成 Javascript 源代码,这完全是“你通常不想涉足的另一头牛”。
标签: javascript code-generation