JSON.parse() 在 pentaho 的 javascript 中不起作用

Posted

技术标签:

【中文标题】JSON.parse() 在 pentaho 的 javascript 中不起作用【英文标题】:JSON.parse() not working in javascript in pentaho 【发布时间】:2016-04-12 06:38:19 【问题描述】:

我正在尝试使用 Modified Java Script Value 步骤从字符串形成数组。这是我解析字符串并形成 JSON 对象的代码。

var info = ;
var keywords = 'Adjust course (C-6),Identify underlying factors (C-4),Isolate teacher actions (C-3_)';
if(keywords != null && keywords != '')
keywords = keywords.replace(/,/g,'","');
keywords = '["'+keywords+'"]';
info.keywords = JSON.parse(keywords);

在 JSON.parse() 中它会抛出一个错误 SyntaxError: Missing comma in array literal.

谁能帮我解析数组并存储在json对象中。

提前致谢!

【问题讨论】:

我在 Chrome 开发控制台中执行了您的代码,它运行良好。同样在 javascript 中,您可以像这样压缩 if 子句: if(keywords)... 你也可以使用eval函数,但是要小心! @Arunraj 请说明你在这段代码之后应该得到什么,我认为这对你有更正确的解决方案 你能console.log(keywords)在你的环境中解析之前告诉它是什么吗? java.lang.System.out.println(keywords); 【参考方案1】:

试试这个

if(keywords)
  keywords = keywords.split(',');
  info.keywords = keywords;

【讨论】:

【参考方案2】:

试试这个:

function kwInfo(text)

    return JSON.parse('["' + (text || '').split(',').join('","') + '"]');


var text = 'Adjust course (C-6),Identify underlying factors (C-4),Isolate teacher actions (C-3_)';
var info = keywords:kwInfo(text);

console.log(info);

【讨论】:

确保您使用的是(受人尊敬的)现代(更新)网络浏览器,例如:Chrome、Firefox、Opera、Safari 等。 这不是普通的 javascript,pentaho 也不是浏览器。它的 rhino js 引擎被隔离了【参考方案3】:

在控制台模式下运行水壶 SpoonConsole.bat

var info = ;
var keywords = 'Adjust course (C-6),Identify underlying factors(C-4),Isolate 
teacher actions (C-3_)';

java.lang.System.out.println("Original : " + keywords);

if(keywords != null && keywords != '')
   keywords = keywords.replace(/,/g,'","');
   java.lang.System.out.println("Regexp applied : " + keywords);
   keywords = '["'+keywords+'"]';
   java.lang.System.out.println(keywords);
   info.keywords = JSON.parse(keywords);

查看控制台并跟踪逻辑中的错误

这是我发现跟踪 JavaScript 步骤的唯一方法

【讨论】:

以上是关于JSON.parse() 在 pentaho 的 javascript 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

JSON.parse()

JSON.parse 没有预期的行为

在 JSON.parse 的位置 0 处获取“SyntaxError:”JSON 中的意外标记”

如何在笑话测试中模拟 json.parse()

看似有效的 JSON 上的 JSON.parse 错误 [重复]

“JSON.parse”和“JSON.stringify”有啥区别?