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 的位置 0 处获取“SyntaxError:”JSON 中的意外标记”