【问题标题】:Javascript remove double quotes in from object's valueJavascript从对象的值中删除双引号
【发布时间】: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


【解决方案1】:

如何“删除引号”是一个错误的问题。在代码运行的那一刻,没有可以删除的引号。

您需要的是一个将名称映射到变量的映射,例如

var myFunctions = {
  renderer_openEntry: renderer_openEntry,
  // other functions
};

然后处理对象以更新所有cellsrender proeprties 的值以引用映射中的值而不是字符串:

gridDefinition.columns.forEachfunction(column) {
  if (column.cellsrenderer) {
    column.cellsrenderer = myFunctions[column.cellsrenderer];
  }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2016-03-21
    • 1970-01-01
    相关资源
    最近更新 更多