Необходимо получить значения объектов (JSON), которые были созданы динамически
Как получить значение верхнего объекта в PentahoDI? У меня есть другие элементы, такие как Category, Subcategory, section из следующего примера файла Json. Тем не менее, мне нужно захватить первый корневой объект, который 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" я дал имена и пути в виде: Категория -> $.. Категория, Подкатегория -> $.. Подкатегория, Раздел -> $.. Раздел.
Тем не менее, я не могу получить корневой элемент, так как это важная информация для нас, чтобы работать над ним. бывший (x@chapter@e50de0196d77495d9b50fc05567b4a4b
а также x@e50de0196d77495d9b50fc05567b4a4b
)
Я использовал следующий код для получения значений динамических объектов, но он не работал. Ниже приведен код, который я использовал.
var obj = JSON.parse (JBlock) //Jblock is the one which holds the entire string.
var keys = Object.name( obj);
1 ответ
JSONPath не может получить ключи структуры JSON. Это одна из моих основных проблем с JSONPath, и я бы хотел, чтобы Pentaho включил другие механизмы синтаксического анализа JSON.
Этот JavaScript будет использоваться в
Modified Java Script Value
работает для меня. Добавьте значение в редакторе полей следующим образом:
И тогда такой скрипт:
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;