Объединение нескольких строк в переменную в формате json

Я пытаюсь работать с файлом json, который был добавлен в Data Explorer в виде таблицы с двумя столбцами: FileLineContent и LineNumber (есть еще два, но они не интересны для моих целей). Я использую Kusto для получения содержимого файла и манипулирования им. Таблица выглядит следующим образом:

LineNumber FileLineContent
1          [
2             {
3               "atr1": "value11",
4               "atr2": "value12",
5               "atr3": {
6                   atr31": "value131",
7                   atr32": "value132"
8                },
9               "atr4": {
10                  "atr41": {
11                     "atr411": [
12                              "value14111",
13                              "value14112"
14                      ]
15                   }
16                   }
17             },
18             {
19               "atr1": "value21",
20               "atr2": "value22",
21               "atr3": {
22                   atr31": "value231",
23                   atr32": "value232"
24               },
25               "atr4": {
26                  "atr41": {
27                     "atr411": [
28                              "value24111",
29                              "value24112"
30                      ]
31                   }
32                   }
33             }
34            ]

Подведем итог: у нас есть массив json-элементов с глубокой иерархией (до 5), отформатированных «красиво» для человеческого глаза, а не для глаз кусто. Мне нужно работать с этими элементами и отображать несколько значений для нескольких атрибутов. Мне трудно создать необработанную переменную, которую я мог бы проанализировать как json.

Я попытался вручную создать json с аналогичной структурой и заметил, что мне нужно удалить все пробелы и все кавычки внутри фигурных скобок. Это должно выглядеть так:

let json = '{"atr1":"value11","atr2":"value12","atr3":"{\\"atr31\\":\\"value131\\",\\"atr32\\":\\"value132\\",\\"atr33\\":\\"value133\\",\\"atr34\\":\\"value134\\",\\"atr35\\":\\"value135\\"}"}';

тогда я могу использовать parse_json() для отображения значений атрибутов.

print parse_json(tostring(parse_json(json).atr3)).atr31

Но это, конечно, не массив json. Я просто построил его, чтобы посмотреть, как его ожидает Kusto.

В заключение моя проблема: как я могу преобразовать приведенную выше таблицу во что-то, что я мог бы проанализировать как JSON? Я попробовал некоторые функции агрегирования, но ничего не дало удовлетворительного результата.

Спасибо!

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это то, что я использовал для решения проблемы. Добавляю сюда, вдруг кому-то понадобится. Запрос предполагает, что данные хранятся в JsonTable в формате, описанном выше:

let RawDataFromTable = 
['JsonTable']
| order by LineNumber asc
| summarize raw = strcat_array(make_list(FileLineContent), "\r\n") by FileName;
 RawDataFromTable 
 | project json = parse_json(tostring(raw))
 | mv-expand json
 | evaluate bag_unpack(json)
 | evaluate bag_unpack(atr3,'atr3_') //this line expands the attributes under atr3 under different columns called atr3_atr31, atr3_atr32. 

Затем запрос можно изменить на основе необходимых данных.

Другие вопросы по теме