Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не могу распарить json с одинарными кавычками / 23 сообщений из 23, страница 1 из 1
11.02.2022, 11:45
    #40133431
ferg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
Здравствуйте, прошу помочь гуру sql в таком вопросе:
нужно распарсить в ms sql json, содержащий одинарные кавычки,
при попытке его распарсить выходит ошибка, предварительное удаление кавычек не помогает.

Что можно придумать, чтобы его распарсить. Скорректировать данные в json возможности нет.
Спасибо.

declare @json nvarchar
declare @response varchar(max)

set @json='{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"ХарактеристикаКЕ_Key\": \"4b8a7511-551f-11e9-9121-00505695891b,\r\n\"Заказчик@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/Заказчик\",\r\n\"ПодразделениеЗаказчика@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/ПодразделениеЗаказчика\",\r\n\"Автор@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/Автор\",\r\n\"ФинансовыйГод@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/ФинансовыйГод\",\r\n\"Подразделение@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/Подразделение\"\r\n}"}}'

select @json


set @response = (SELECT ResponseContent
FROM OPENJSON(@json, N'$.HttpResponse')
WITH (
ResponseContent varchar(max) N'$.ResponseContent'
))


select @response
...
Рейтинг: 0 / 0
11.02.2022, 12:31
    #40133451
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
Ты предлагаешь нам угадать, где там у тебя одинарные кавычки?

1. Если удаление "одинарные кавычки" спасает - replace.
2. Если удаление "одинарные кавычки" НЕспасает - вы все врете.
...
Рейтинг: 0 / 0
11.02.2022, 12:38
    #40133454
ferg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
aleks222
Ты предлагаешь нам угадать, где там у тебя одинарные кавычки?

1. Если удаление "одинарные кавычки" спасает - replace.
2. Если удаление "одинарные кавычки" НЕспасает - вы все врете.


добавил replace, все равно ошибка, одинарные кавычки выделил жирным

declare @json nvarchar
declare @response varchar(max)

set @json='{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"ХарактеристикаКЕ_Key\": \"4b8a7511-551f-11e9-9121-00505695891b,\r\n\"Заказчик@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ( guid'5ddb 718e-8a67-11ec-b985-0025b51b 0000')/ Заказчик\",\r\n\"ПодразделениеЗаказчика@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ( guid'5ddb 718e-8a67-11ec-b985-0025b51b0 000')/ ПодразделениеЗаказчика\",\r\n\"Автор@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ( guid'5ddb 718e-8a67-11ec-b985-0025b51 b0000')/ Автор\",\r\n\"ФинансовыйГод@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b5 1b0000')/ ФинансовыйГод\",\r\n\"Подразделение@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(g uid'5ddb7 18e-8a67-11ec-b985-0025b51b 0000')/ Подразделение\"\r\n}"}}'

/*ДОБАВИЛ REPLACE*/set @json= (select replace(@json,char(39),'"'))

select @json


set @response = (SELECT ResponseContent
FROM OPENJSON(@json, N'$.HttpResponse')
WITH (
ResponseContent varchar(max) N'$.ResponseContent'
))




select @response
...
Рейтинг: 0 / 0
11.02.2022, 12:52
    #40133456
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
ferg
declare @json nvarchar




ferg
одинарные кавычки выделил жирным

"одинарные кавычки" должны быть подвоены

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @json nvarchar(max)
declare @response varchar(max)

set @json='{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"ХарактеристикаКЕ_Key\": \"4b8a7511-551f-11e9-9121-00505695891b,\r\n\"Заказчик@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Заказчик\",\r\n\"ПодразделениеЗаказчика@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/ПодразделениеЗаказчика\",\r\n\"Автор@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Автор\",\r\n\"ФинансовыйГод@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/ФинансовыйГод\",\r\n\"Подразделение@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Подразделение\"\r\n}"}}'

select @json

set @response = (SELECT ResponseContent
FROM OPENJSON(@json, N'$.HttpResponse')
WITH (
ResponseContent varchar(max) N'$.ResponseContent'
))


select @response



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"Характер

(1 row affected)


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{
"Заказ_Key": "c9e2ebdb-68bd-11ec-b985-0025b51b0000",
"ТипОбеспечения": "Заказ",
"КонфигурационнаяЕдиница_Key": "60e8b0b4-2723-11ea-9135-00505695ff0d",
"ХарактеристикаКЕ_Key": "4b8a7511-551f-11e9-9121-00505695891b,
"Заказчик@navigationLinkUrl": "Docu

(1 row affected)

...
Рейтинг: 0 / 0
11.02.2022, 12:58
    #40133459
ferg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
court
ferg
declare @json nvarchar




ferg
одинарные кавычки выделил жирным

"одинарные кавычки" должны быть подвоены

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @json nvarchar(max)
declare @response varchar(max)

set @json='{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"ХарактеристикаКЕ_Key\": \"4b8a7511-551f-11e9-9121-00505695891b,\r\n\"Заказчик@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Заказчик\",\r\n\"ПодразделениеЗаказчика@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/ПодразделениеЗаказчика\",\r\n\"Автор@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Автор\",\r\n\"ФинансовыйГод@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/ФинансовыйГод\",\r\n\"Подразделение@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Подразделение\"\r\n}"}}'

select @json

set @response = (SELECT ResponseContent
FROM OPENJSON(@json, N'$.HttpResponse')
WITH (
ResponseContent varchar(max) N'$.ResponseContent'
))


select @response



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"Характер

(1 row affected)


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{
"Заказ_Key": "c9e2ebdb-68bd-11ec-b985-0025b51b0000",
"ТипОбеспечения": "Заказ",
"КонфигурационнаяЕдиница_Key": "60e8b0b4-2723-11ea-9135-00505695ff0d",
"ХарактеристикаКЕ_Key": "4b8a7511-551f-11e9-9121-00505695891b,
"Заказчик@navigationLinkUrl": "Docu

(1 row affected)



да, разумеется, в первой строке должно быть declare @json nvarchar(max) а не declare @json nvarchar
Но мне подается из 1С json как раз с одиночными , а не сдвоенными одинарными кавычками. И передалать этот запрос в 1С у меня нет возможности, надо распарсить то что есть.
...
Рейтинг: 0 / 0
11.02.2022, 13:04
    #40133460
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
ferg
Но мне подается из 1С json как раз с одиночными , а не сдвоенными одинарными кавычками.
он как "подаётся" ? На бумажке распечатанный и ты его с клавиатуры набираешь ?
Или всё-таки, этот json принимается в какую-то переменную, и её дальше используешь ?

Про "подвоення" - это только для первого случая
Во-втором никакой проблемы быть не должно
...
Рейтинг: 0 / 0
11.02.2022, 13:08
    #40133462
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
ferg

Но мне подается из 1С json как раз с одиночными , а не сдвоенными одинарными кавычками. И передалать этот запрос в 1С у меня нет возможности, надо распарсить то что есть.


1. Не верю! (с) Станиславский.
2. Конешно 1С - дерьмо, но вряд ли они json сами писали.
3. Где "цитата" примера json?
4. Опять сказки рассказываете?
...
Рейтинг: 0 / 0
11.02.2022, 13:11
    #40133465
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
ТС, у тебя невалидная строка json

Код: sql
1.
"4b8a7511-551f-11e9-9121-00505695891b",



" - нет кавычки двойной
а все одинарные должны быть задвоены ''
...
Рейтинг: 0 / 0
11.02.2022, 13:17
    #40133468
ferg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
aleks222
ferg

Но мне подается из 1С json как раз с одиночными , а не сдвоенными одинарными кавычками. И передалать этот запрос в 1С у меня нет возможности, надо распарсить то что есть.


1. Не верю! (с) Станиславский.
2. Конешно 1С - дерьмо, но вряд ли они json сами писали.
3. Где "цитата" примера json?
4. Опять сказки рассказываете?



мне приходит такой JSON(см ниже).
Попробуйте его распарсить сами.
Одинарные кавычки выделил жирным.
Попробуйте его распарсить сами и поверите, свои попытки я показывал выше.

{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"ХарактеристикаКЕ_Key\": \"4b8a7511-551f-11e9-9121-00505695891b,\r\n\"Заказчик@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid ' 5ddb718e-8a67-11ec-b985-0025b51b0000 ' )/Заказчик\",\r\n\"ПодразделениеЗаказчика@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/ПодразделениеЗаказчика\",\r\n\"Автор@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/Автор\",\r\n\"ФинансовыйГод@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/ФинансовыйГод\",\r\n\"Подразделение@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/Подразделение\"\r\n}"}}
...
Рейтинг: 0 / 0
11.02.2022, 13:20
    #40133470
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
он у вас невалидный, это не json!

вот такой у вас должен быть:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare @json NVARCHAR(MAX);
set @json = N'{
	"InnerError": "",
	"HttpResponse":
	{
		"StatusCode": 201,
		"ResponseContent": 		
		{
			"Заказ_Key": "c9e2ebdb-68bd-11ec-b985-0025b51b0000",
			"ТипОбеспечения": "Заказ", 
			"КонфигурационнаяЕдиница_Key": "60e8b0b4-2723-11ea-9135-00505695ff0d", 
			"ХарактеристикаКЕ_Key": "4b8a7511-551f-11e9-9121-00505695891b",
			"Заказчик@navigationLinkUrl": "Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Заказчик", 
			"ПодразделениеЗаказчика@navigationLinkUrl": "Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/ПодразделениеЗаказчика", 
			"Автор@navigationLinkUrl": "Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Автор", 
			"ФинансовыйГод@navigationLinkUrl": "Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/ФинансовыйГод", 
			"Подразделение@navigationLinkUrl": "Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Подразделение" 
		}
	}
}';

select ISJSON(@json)
...
Рейтинг: 0 / 0
11.02.2022, 13:23
    #40133473
ferg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
Konst_One
он невалидный, это не json

https://jsonformatter.curiousconcept.com считает, что он валидный
...
Рейтинг: 0 / 0
11.02.2022, 13:25
    #40133475
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
ferg,

а причём тут это? вам же нужно парсить в MS SQL!
...
Рейтинг: 0 / 0
11.02.2022, 13:29
    #40133477
ferg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
Konst_One
ferg,

а причём тут это? вам же нужно парсить в MS SQL!

я не могу переделать json который получаю из 1с ,
такая структура парсится точно, сейчас вот поблема только с одинарными кавычками и вот вопрос, можно ли такой json распарсить?
...
Рейтинг: 0 / 0
11.02.2022, 13:30
    #40133478
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
все одинарные кавычки внутри строки должны быть задвоены.
Просите своих программеров 1С, чтобы они для вас готовили строку в нужном вам формате. Или выгружайте эти строки сначала куда-нибудь и форматируйте их сами правильно.
...
Рейтинг: 0 / 0
11.02.2022, 13:44
    #40133493
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
как вариант: записывайте приходящие строки в промежуточную таблицу в поле [Json1C] nvarchar(max), потом от туда уже извлекайте и парсите себе на здоровье.

Код: sql
1.
2.
3.
DECLARE @json nvarchar(max);
SET @json = (select [Json1C] from dbo.Test where Id = 1);
SELECT ISJSON(@json) as [is valid json string];
...
Рейтинг: 0 / 0
11.02.2022, 14:00
    #40133501
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
ferg
aleks222
пропущено...


1. Не верю! (с) Станиславский.
2. Конешно 1С - дерьмо, но вряд ли они json сами писали.
3. Где "цитата" примера json?
4. Опять сказки рассказываете?



мне приходит такой JSON(см ниже).
Попробуйте его распарсить сами.
Одинарные кавычки выделил жирным.
Попробуйте его распарсить сами и поверите, свои попытки я показывал выше.

{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"ХарактеристикаКЕ_Key\": \"4b8a7511-551f-11e9-9121-00505695891b,\r\n\"Заказчик@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid ' 5ddb718e-8a67-11ec-b985-0025b51b0000 ' )/Заказчик\",\r\n\"ПодразделениеЗаказчика@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/ПодразделениеЗаказчика\",\r\n\"Автор@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/Автор\",\r\n\"ФинансовыйГод@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/ФинансовыйГод\",\r\n\"Подразделение@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'5ddb718e-8a67-11ec-b985-0025b51b0000')/Подразделение\"\r\n}"}}


Формально это валидный JSON.
Ну а теперь процитируйте ошибку парсера MS SQL.
...
Рейтинг: 0 / 0
11.02.2022, 14:02
    #40133502
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
Konst_One
все одинарные кавычки внутри строки должны быть задвоены.
Просите своих программеров 1С, чтобы они для вас готовили строку в нужном вам формате. Или выгружайте эти строки сначала куда-нибудь и форматируйте их сами правильно.

Зачем пороть чушЪ. Ей больно.

Все в рамках
https://docs.microsoft.com/ru-ru/sql/t-sql/functions/string-escape-transact-sql?view=sql-server-ver15

Одинарные кавычки для JSON НЕ спецсимвол - можно совать куды хошь.
...
Рейтинг: 0 / 0
11.02.2022, 14:07
    #40133505
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
ferg
Но мне подается из 1С json как раз с одиночными , а не сдвоенными одинарными кавычками.


Вы совсем необразованы?
Повтор одиночной кавычки = esc-символ. Он нужен только если вы пытаетесь ЯВНО НАПИСАТЬ строковую константу в Т-SQL.

declare @str nvarchar(1024) = N'Строка с одинарной '' кавычкой';

Содержимое @str в этом случае

Код: plaintext
Строка с одинарной ' кавычкой
...
Рейтинг: 0 / 0
11.02.2022, 14:39
    #40133514
ferg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
aleks222
ferg
Но мне подается из 1С json как раз с одиночными , а не сдвоенными одинарными кавычками.


Вы совсем необразованы?

зачем переходить на личности? я по вам не прокатывался, а мог бы так, что мало бы не показалось.

Вы бы хоть показали как преобразовать этот полученный json, чтобы его можно было распарсить, а не только бы надували бы щеки и писали не верю.

Пожаловался на вас модератору, чтобы сбить с вас спесь.
...
Рейтинг: 0 / 0
11.02.2022, 14:41
    #40133515
ferg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
Konst_One
как вариант: записывайте приходящие строки в промежуточную таблицу в поле [Json1C] nvarchar(max), потом от туда уже извлекайте и парсите себе на здоровье.

Код: sql
1.
2.
3.
DECLARE @json nvarchar(max);
SET @json = (select [Json1C] from dbo.Test where Id = 1);
SELECT ISJSON(@json) as [is valid json string];



Спасибо за участие
...
Рейтинг: 0 / 0
11.02.2022, 14:42
    #40133516
ferg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
court
ferg
declare @json nvarchar




ferg
одинарные кавычки выделил жирным

"одинарные кавычки" должны быть подвоены

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @json nvarchar(max)
declare @response varchar(max)

set @json='{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"ХарактеристикаКЕ_Key\": \"4b8a7511-551f-11e9-9121-00505695891b,\r\n\"Заказчик@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Заказчик\",\r\n\"ПодразделениеЗаказчика@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/ПодразделениеЗаказчика\",\r\n\"Автор@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Автор\",\r\n\"ФинансовыйГод@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/ФинансовыйГод\",\r\n\"Подразделение@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Подразделение\"\r\n}"}}'

select @json

set @response = (SELECT ResponseContent
FROM OPENJSON(@json, N'$.HttpResponse')
WITH (
ResponseContent varchar(max) N'$.ResponseContent'
))


select @response



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"Характер

(1 row affected)


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{
"Заказ_Key": "c9e2ebdb-68bd-11ec-b985-0025b51b0000",
"ТипОбеспечения": "Заказ",
"КонфигурационнаяЕдиница_Key": "60e8b0b4-2723-11ea-9135-00505695ff0d",
"ХарактеристикаКЕ_Key": "4b8a7511-551f-11e9-9121-00505695891b,
"Заказчик@navigationLinkUrl": "Docu

(1 row affected)



Отличное решение! Спасибо!
...
Рейтинг: 0 / 0
11.02.2022, 17:39
    #40133575
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
ferg
court
пропущено...




пропущено...

"одинарные кавычки" должны быть подвоены

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
declare @json nvarchar(max)
declare @response varchar(max)

set @json='{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"ХарактеристикаКЕ_Key\": \"4b8a7511-551f-11e9-9121-00505695891b,\r\n\"Заказчик@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Заказчик\",\r\n\"ПодразделениеЗаказчика@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/ПодразделениеЗаказчика\",\r\n\"Автор@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Автор\",\r\n\"ФинансовыйГод@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/ФинансовыйГод\",\r\n\"Подразделение@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid''5ddb718e-8a67-11ec-b985-0025b51b0000'')/Подразделение\"\r\n}"}}'

select @json

set @response = (SELECT ResponseContent
FROM OPENJSON(@json, N'$.HttpResponse')
WITH (
ResponseContent varchar(max) N'$.ResponseContent'
))


select @response



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"Характер

(1 row affected)


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
{
"Заказ_Key": "c9e2ebdb-68bd-11ec-b985-0025b51b0000",
"ТипОбеспечения": "Заказ",
"КонфигурационнаяЕдиница_Key": "60e8b0b4-2723-11ea-9135-00505695ff0d",
"ХарактеристикаКЕ_Key": "4b8a7511-551f-11e9-9121-00505695891b,
"Заказчик@navigationLinkUrl": "Docu

(1 row affected)



Отличное решение! Спасибо!


Интересуюсь, сонечка, в чем тут "решение"?
Вам действительно json на гумажке приносят и вы его врукопашную печатаете в MS SQL?
...
Рейтинг: 0 / 0
11.02.2022, 23:21
    #40133653
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не могу распарить json с одинарными кавычками
ferg,

двойные кавычки нужны для того, чтобы SSMS корректно интерпретировала скаляр.
Вы что, парсите в менеджмент студии вручную?
Вот пример, все прекрасно работает с одинарными кавычками. Просмотрите текст переменных внимательно.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
declare @json varchar(max)
declare @response varchar(max)

set @json='{"InnerError":"","HttpResponse":{"StatusCode":201,"ResponseContent":"{\r\n\"Заказ_Key\": \"c9e2ebdb-68bd-11ec-b985-0025b51b0000\",\r\n\"ТипОбеспечения\": \"Заказ\",\r\n\"КонфигурационнаяЕдиница_Key\": \"60e8b0b4-2723-11ea-9135-00505695ff0d\",\r\n\"ХарактеристикаКЕ_Key\": \"4b8a7511-551f-11e9-9121-00505695891b,\r\n\"Заказчик@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'+
	'5ddb718e-8a67-11ec-b985-0025b51b0000'+
	''')/Заказчик\",\r\n\"ПодразделениеЗаказчика@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'''+
	'5ddb718e-8a67-11ec-b985-0025b51b0000'+
	''')/ПодразделениеЗаказчика\",\r\n\"Автор@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'''+
	'5ddb718e-8a67-11ec-b985-0025b51b0000'+''')/Автор\",\r\n\"ФинансовыйГод@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'''+
	'5ddb718e-8a67-11ec-b985-0025b51b0000'+''')/ФинансовыйГод\",\r\n\"Подразделение@navigationLinkUrl\": \"Document_ВнутреннееПотреблениеКонфигурационныхЕдиниц_СМ(guid'''+
	'5ddb718e-8a67-11ec-b985-0025b51b0000'+
	''')/Подразделение\"\r\n}"}}'


select @json

set @response = (SELECT ResponseContent
FROM OPENJSON(@json, N'$.HttpResponse')
WITH (
ResponseContent varchar(max) N'$.ResponseContent'
))
select @response

...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не могу распарить json с одинарными кавычками / 23 сообщений из 23, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]