【问题标题】:parse string js function in JSON as a js function将JSON中的字符串js函数解析为js函数
【发布时间】:2016-09-10 19:52:01
【问题描述】:

我有 PHP json 字符串。

{"formatter":"function (){    return   '<b>' + this.series.xAxis.categories[this.point.x] + '<\/b> sold <br><b>' + this.point.value + '<\/b> items on <br><b>' + this.series.yAxis.categories[this.point.y] + '<\/b>';   }"}

借助这个答案Stackoverflow Answer,我可以像这样将 JSON 转换为 PHP 字符串

{"formatter":function (){    return   '<b>' + this.series.xAxis.categories[this.point.x] + '<\/b> sold <br><b>' + this.point.value + '<\/b> items on <br><b>' + this.series.yAxis.categories[this.point.y] + '<\/b>';   }}

但是当我尝试使用

将 JSON 解析为对象时
jQuery.parseJSON(variableContainingPHPJSONstring)

我有这样的错误。

Uncaught SyntaxError: 位置 14 处 JSON 中的意外标记 u

这是我正在处理的 JSON,它是一个 HIGHCHART。

I have this type of highchart config data coming from db=> php Array=> php json => js string => js object

我这里只有功能部分有问题。 在 tooltip:formatter

【问题讨论】:

  • JSON 中不允许函数,所以显然解析失败。
  • 第二个不再是 JSON,而是一个 javascript 对象。您无法使用 jQuery.parse 解析它。
  • 我知道...但我想要一种方法来实现这个...@trincot
  • 如果你知道它不是 JSON,你为什么叫你的变量json
  • 您在 jsfiddle 中显示的代码是 not JSON 它是 JavaScript 代码。您将提供代码以定期作为脚本创建图表,并且仅将图表的数据请求为 JSON。

标签: javascript php jquery json


【解决方案1】:

函数不是有效的 json。如果你想让它可用,你必须 eval() 函数。我鼓励你找到一种方法来避免这样做,或者有一个工具提示函数来接受一行数据或其他什么,但这是一个使用 eval() 基本上做你想做的事情的工作示例。

var data = {
    key1: "123",
    key2: "junk",
    formatter: "(function(){return 4;})"
};

var formatter = eval(data.formatter);

console.log(formatter());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多