Недопустимое состояние потока записи 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
![]()

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

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