Перейти к содержимому

Недопустимое состояние потока записи json 1с как исправить

  • автор:

Недопустимое состояние потока записи json 1с как исправить

Доброго времени. делаю интеграцию с сайтом ,получаю JSON типа
<
«products»: [
<
«product»: «АНТИСЕПТИК Д/РУК БЬЮТИ СЕПТ 5л 0252/0030»,
«price»: 500,
«count»: 3,
«total»: 1500,
«serie»: «»,
«package»: «105*0»,
«manufacturer»: «»
>
],
«address»: «»,
«login»: «»,
«payment»: «»,
«order_total»: «»
>

При попытке чтения ввыходит Ошибка при вызове метода контекста (ПрочитатьJSON): Недопустимое состояние потока записи

читаю как обычно
ТелоЗапроса = Запрос.ПолучитьТелоКакСтроку();
Чтение=новый ЧтениеJSON;
Чтение.УстановитьСтроку(СтрокаJSON);
ОбъектJSON=ПрочитатьJSON(Чтение,ЛОжь);
Чтение.Закрыть();
Возврат ОбъектJSON;

Недопустимое состояние потока записи json 1с как исправить

Продолжение эпопеи
Получил json, пробую читать
ПрочитатьJSON(Чтение, Истина);
получаю «Недопустимое состояние потока записи JSON»
так понимаю, такой файл только как текст парсить?
есть примеры таких парсеров?

сначала проверь, что именно json получил
а что говорит по этому поводу
https://jsonformatter.curiousconcept.com/
проверь корректность
https://jsonlint.com

Ошибка «Недопустимое состояние потока записи JSON» 1С 8.3
Указанная в заголовке ошибка возникает, в момент вызова метода ПрочитатьJSON, если ранее параметр типа ЧтениеJSON, был инициализирован пустой строкой.

сейчас проверю
(1) в ответ тип json приходит
(5) о как, тоже проверю
Над простейшей задачкой которая решается спецом за пару часов возиться несколько дней?
(8) Так то спецом решается. А тут очевидно, что учётку угнали.

(8) ))) я же первый раз в таком болоте
и занимаюсь ей не все время, так только — по возможности
не ругайся )

(9) я тебя тоже люблю, тебя все любят )))
(5) не, чтение вроде не с пустой строкой, Прочитать() у него истина

(12) Ты сказал свежему чтению прочитать, а потом делаешь ПрочитатьJSON()? Ну и кто тебе после этого доктор?

Посмотри отладчиком, что тебе в том json пришло, у меня было подобное, когда сервер вместо json какую то ошибку выплевывал и кракозыбры

(13) ты как всегда в корень попал )))
(14) ошибки то я отлавливаю
всем спасибо, получилось ))
(16) Дык я сегодня целы день с ним вожусь. 36метровые ответы разбираю )))
(18) у меня поменьше, всего 750 Кб )

отчего могут теряться «теги» при чтении?
читаю в соответствие, «строки» — массив соответствий в одном из ключей
в каждое из массива захожу и не нахожу первых двух «тегов», которые присутствуют в файле
куда теряются?
также непонятно — какой «тег» я считываю, результат Соответствие, а как он «зовется» — нет информации

Ошибка «Недопустимое состояние потока записи JSON» 1С 8.3

Указанная в заголовке ошибка возникает, в момент вызова метода ПрочитатьJSON, если ранее параметр типа ЧтениеJSON, был инициализирован пустой строкой.

Вызывающий ошибку код:

ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку(""); Структура = ПрочитатьJSON(ЧтениеJSON);

Работающий код

ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.УстановитьСтроку("<>"); Структура = ПрочитатьJSON(ЧтениеJSON);

То есть требуется передавать объект заданный фигурными скобками.

Примечание

Отмечу, что функции для работы с JSON появились в платформе 1с 8.3.6, ранее json можно было использовать через функции, которые распространялись в сообществах еще с 7.7 версии.

Реклама побуждает людей жить не по средствам? То же самое можно сказать о браке.

— Брюс Бартон, рекламный агент.

Недопустимое состояние потока записи json 1с как исправить

добрый день!
такой код выдаёт ошибку «по причине:
Недопустимое состояние потока записи JSON»

  
Чтение = Новый ЧтениеJSON;
Чтение.ОткрытьФайл(Этаформа.ПутьЧтения+".json");
Чтение.УстановитьСтроку("<>");
Джисон = ПрочитатьJSON(Чтение);
Чтение.Закрыть();

в чем ошибка?
файл

[
"Ссылка": "ТОВ \"ДИРЕКТОРІЯ ЗАТИШКУ\"",
"Код": "000000006",
"Наименование": "ТОВ \"ДИРЕКТОРІЯ ЗАТИШКУ\"",
"Префикс": "ДЗ",
"ИНН": "",
"НомерСвидетельства": "",
"КодПоЕДРПОУ": "40769228",
"ФизическоеЛицо": "",
"НаименованиеПолное": "ТОВАРИСТВО З ОБМЕЖЕНОЮ ВІДПОВІДАЛЬНІСТЮ \"ДИРЕКТОРІЯ ЗАТИШКУ\"",
"СвидетельствоСерияНомер": "",
"СвидетельствоДатаВыдачи": "01.01.0001 0:00:00",
"БанковскийСчетПоУмолчанию": "UA653287040000026009054334936 ТОВ \"ДИРЕКТОРІЯ ЗАТИШКУ\"",
"ЮрФизЛицо": "Юр. лицо",
"ТекущийРуководитель": "БЕЗРАДНА СВІТЛАНА ВІКТОРІВНА",
"ТекущаяДолжностьРуководителя": "Директор",
"ТекущийГлавныйБухгалтер": "",
"ТекущийКассир": "",
"ТекущийПаспортист": "",
"ТипОрганизации": "ТОВ",
"УчетнаяЗаписьЭлектроннойПочты": "",
"НазваниеДляСвернутыхУслуг": "",
"ИнформацияПредупреждениеНовойКвитанции": ""
>,
"Ссылка": "ОК \" ЖБК Морський 1\"",
"Код": "000000001",
"Наименование": "ОК \" ЖБК Морський 1\"",
"Префикс": "МК",
"ИНН": "",
"НомерСвидетельства": "",
"КодПоЕДРПОУ": "39789906",
"ФизическоеЛицо": "",
"НаименованиеПолное": " Обслуговуючий Кооператив \" ЖБК Морський 1\"",
"СвидетельствоСерияНомер": "",
"СвидетельствоДатаВыдачи": "01.01.0001 0:00:00",
"БанковскийСчетПоУмолчанию": "UA583281680000000026003180694",
"ЮрФизЛицо": "Юр. лицо",
"ТекущийРуководитель": "Хапонен Валерий Сергеевич",
"ТекущаяДолжностьРуководителя": "",
"ТекущийГлавныйБухгалтер": "",
"ТекущийКассир": "",
"ТекущийПаспортист": "",
"ТипОрганизации": "Кооператив",
"УчетнаяЗаписьЭлектроннойПочты": "Морской",
"НазваниеДляСвернутыхУслуг": "",
"ИнформацияПредупреждениеНовойКвитанции": ""
>,
 ЗаписатьJSON(ЗаписьJSON, Массив_записи);

где Массив_записи

Запрос = Новый Запрос; 
Запрос.Текст =
"ВЫБРАТЬ *
|ИЗ
| Справочник.Организации КАК Организации
|";
Выборка = Запрос.Выполнить().Выбрать();
Массив_записи =Новый массив;

Пока Выборка.Следующий() Цикл

ОписаниеОбъекта = Новый Структура("Ссылка, Код, Наименование, Префикс,ИНН,НомерСвидетельства,КодПоЕДРПОУ,
ФизическоеЛицо,НаименованиеПолное,СвидетельствоСерияНомер,СвидетельствоДатаВыдачи,
БанковскийСчетПоУмолчанию,ЮрФизЛицо,ТекущийРуководитель,ТекущаяДолжностьРуководителя,
ТекущийГлавныйБухгалтер,ТекущийКассир,ТекущийПаспортист,ТипОрганизации,
УчетнаяЗаписьЭлектроннойПочты,НазваниеДляСвернутыхУслуг,ИнформацияПредупреждениеНовойКвитанции");
ОписаниеОбъекта.Ссылка = Строка(Выборка.Ссылка);
ОписаниеОбъекта.Код=Строка(Выборка.Код);
ОписаниеОбъекта.Наименование=Строка(Выборка.Наименование);
ОписаниеОбъекта.Префикс=Строка(Выборка.Префикс);
ОписаниеОбъекта.ИНН=Строка(Выборка.ИНН);
ОписаниеОбъекта.НомерСвидетельства=Строка(Выборка.НомерСвидетельства);
ОписаниеОбъекта.КодПоЕДРПОУ=Строка(Выборка.КодПоЕДРПОУ);
ОписаниеОбъекта.ФизическоеЛицо=Строка(Выборка.ФизическоеЛицо);
ОписаниеОбъекта.НаименованиеПолное=Строка(Выборка.НаименованиеПолное);
ОписаниеОбъекта.СвидетельствоСерияНомер=Строка(Выборка.СвидетельствоСерияНомер);
ОписаниеОбъекта.СвидетельствоДатаВыдачи=Строка(Выборка.СвидетельствоДатаВыдачи);
ОписаниеОбъекта.БанковскийСчетПоУмолчанию=Строка(Выборка.БанковскийСчетПоУмолчанию);
ОписаниеОбъекта.ЮрФизЛицо=Строка(Выборка.ЮрФизЛицо);
ОписаниеОбъекта.ТекущийРуководитель=Строка(Выборка.ТекущийРуководитель);
ОписаниеОбъекта.ТекущаяДолжностьРуководителя=Строка(Выборка.ТекущаяДолжностьРуководителя);
ОписаниеОбъекта.ТекущийГлавныйБухгалтер=Строка(Выборка.ТекущийГлавныйБухгалтер);
ОписаниеОбъекта.ТекущийКассир=Строка(Выборка.ТекущийКассир);
ОписаниеОбъекта.ТекущийПаспортист=Строка(Выборка.ТекущийПаспортист);
ОписаниеОбъекта.ТипОрганизации=Строка(Выборка.ТипОрганизации);
ОписаниеОбъекта.УчетнаяЗаписьЭлектроннойПочты=Строка(Выборка.УчетнаяЗаписьЭлектроннойПочты);
ОписаниеОбъекта.НазваниеДляСвернутыхУслуг=Строка(Выборка.НазваниеДляСвернутыхУслуг);
ОписаниеОбъекта.ИнформацияПредупреждениеНовойКвитанции=Строка(Выборка.ИнформацияПредупреждениеНовойКвитанции);
Массив_записи.Добавить(ОписаниеОбъекта);

КонецЦикла;

Сообщение отредактировал Vofka — 19.09.20, 16:02

volodya1122 —> volodya1122

Просмотр профиля

Найти сообщения пользователя

18.09.20, 8:59

svetas_l @ Сегодня, 9:36 ,

Сообщение отредактировал volodya1122 — 18.09.20, 9:10

Спасибо сказали: svetas_l,

svetas_l —> svetas_l

Просмотр профиля

Найти сообщения пользователя

18.09.20, 9:25
у вас тоже идёт

 ЧтениеJSON = Новый ЧтениеJSON; 
ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
Данные = ПрочитатьJSON(ЧтениеJSON, Ложь);

только уже с сайтом
мне бы сначала понять что не так и даёт ошибку в 3 строчках ,
а затем уже буду разбираться с сайтом.
В любом случае спасибо .

mut —> mut

Просмотр профиля

Найти сообщения пользователя

18.09.20, 9:37

Если объект Чтение уже открыл файл, зачем вызывать УстановитьСтроку?

Если хотите через УстановитьСтроку, откройте файл объектом с типом ТекстовыйДокумент, получите строку и передайте в Чтение. А если уже сделали ОткрытьФайл, то просто вызывайте ПрочитатьJSON.

volodya1122 —> volodya1122

Просмотр профиля

Найти сообщения пользователя

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *