Ключ анализа JSON для столбца таблицы SQL Server 2016

Мы получаем этот документ JSON и импортируем его в SQL Server 2016 с использованием компонента Kingswaysoft JSON Source.

{
    "Program": "USRMI",
    "Transaction": "GetUserInfo",
    "Metadata": {
        "Field": [
            {
                "@name": "USERID",
                "@type": "A",
                "@length": 10,
                "@description": "User"
            },
            {
                "@name": "COMPNO",
                "@type": "N",
                "@length": 3,
                "@description": "Company"
            },
        ]
    },
    "MIRecord": [
        {
            "NameValue": [
                {
                    "Name": "USERID",
                    "Value": "JOEBLO88"
                },
                {
                    "Name": "COMPNO",
                    "Value": "999"
                },

            ],
            "RowIndex": 0
        }
        {
            "NameValue": [
                {
                    "Name": "USERID",
                    "Value": "JOEBLO55"
                },
                {
                    "Name": "COMPNO",
                    "Value": "998"
                },
            ],
            "RowIndex": 1
        }       
    ]
}

и иметь следующий столбец в таблице:

{"Name": "USERID","Value": "JOBLO88"}
{"Name": "COMPNO","Value": "988"}
{"Name": "USERID","Value": "JOBLO55"}
{"Name": "COMPNO","Value": "955"}

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

USERID  COMPNO
======  ======
JOBLO88  988
JOBLO55  955

Это недопустимый JSON. Запятые после последнего элемента в массиве не допускаются. Распространенная ошибка при уменьшении размера действующего JSON или, возможно, сломанный генератор. Вы можете использовать jsonlint.com, чтобы проверить такие вещи. SQL Server не может самостоятельно проанализировать или исправить недопустимый JSON, так что это имеет значение.

Jeroen Mostert 13.09.2018 14:53

Я также не понимаю, о чем вы спрашиваете: нужно ли вам преобразовать первый JSON во вторую таблицу JSON а также, или у вас есть только второй JSON, и вам нужна таблица из этого, или какой-то захватывающий комбинация двух?

Jeroen Mostert 13.09.2018 14:54

@JeroenMostert да, вы правильно, я немного подправил json, чтобы показать пример, и добавил это по ошибке

dazcuk 13.09.2018 15:09

@JeroenMostert в настоящее время мы импортируем полный файл json, что может привести к созданию до 4 отдельных таблиц (Root, NameValue, Field, MIRecord массивы / таблицы объектов), чтобы мы могли сделать что-то интересное с любым из них или просто использовать вторую таблицу json (NameValue) для вывода новой таблицы в формате столбца, который нам нужен

dazcuk 13.09.2018 15:15

У вас есть таблицы заранее и вы хотите поместить в них данные JSON или вы хотите сгенерировать таблицы на основе JSON? Последнее намного сложнее, чем первое, потому что T-SQL статически типизирован (в основном), поэтому вам понадобится сложный код, чтобы выяснить, какие столбцы должны быть в таблице (лучше всего это делать вне SQL Server). Разбор JSON выполняется с помощью OPENJSON и JSON_QUERY, но они не могут создавать динамические таблицы; структуру нужно уточнять заранее.

Jeroen Mostert 13.09.2018 15:31

@JeroenMostert да, мы создадим все таблицы заранее, как вы говорите, динамически было бы кошмаром

dazcuk 13.09.2018 15:48
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
6
85
0

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