如何获得PentahoDI中的顶级对象值?我从Json文件的以下示例中获得了其他元素,如Category,Subcategory,section。但是,我需要捕获第一个根对象x@chapter@e50de0196d77495d9b50fc05567b4a4b
和x@e50de0196d77495d9b50fc05567b4a4b
{
"x@chapter@e50de0196d77495d9b50fc05567b4a4b": {
"Category": "chapter",
"SubCategory": [
"x@4eb9072cf36f4d6fa1e98717e6bb54f7",
"x@d85849fbde324690b6067f3b18c4258d",
"x@3edff1a1864f41fe8b212df2bc96bf13"
],
"Section": {
"display_name": "Week 1 Section"
}
},
"x@e50de0196d77495d9b50fc05567b4a4b": {
"category": "course",
"Subcategory": [
"x@e50de0196d77495d9b50fc05567b4a4b"
],
"Section": {
"advanced_modules": [
"google-document"
],
}
}
}
在Json输入步骤的“字段”选项卡中,我将名称和路径指定为:类别 - > $ ..类别,子类别 - > $ ..子类别,部分 - > $ ..款。
但是,我无法获得根元素,因为它是我们处理它的关键信息。 ex(x@chapter@e50de0196d77495d9b50fc05567b4a4b
和x@e50de0196d77495d9b50fc05567b4a4b
)
我使用以下代码来获取动态对象的值,但它没有用。以下是我用过的代码。
var obj = JSON.parse (JBlock) //Jblock is the one which holds the entire string.
var keys = Object.name( obj);
答案 0 :(得分:0)
JSONPath无法获取JSON结构的键。这是我与JSONPath的主要问题之一,我希望Pentaho包含其他JSON解析引擎。
Modified Java Script Value
中使用的JavaScript适用于我。在字段编辑器中添加一个值,如下所示:
然后是这样的剧本:
var obj = JSON.parse(JBlock);
var keys = Object.keys(obj);
for (var i = 0; i < keys.length; i++) {
var row = createRowCopy(getOutputRowMeta().size());
var idx = getInputRowMeta().size();
row[idx++] = keys[i];
putRow(row);
}
trans_Status = SKIP_TRANSFORMATION;