7.7 и разбор json от Озона: Ошибка компиляции Microsoft JScript: Предполагается наличие '}'
В 7ке разбираю скриптом json полученный от озона. Ответ 200ок, тело ответа возвращается (и даже при желании записывается в файл) но при разборе получаю сабж. Хотя такой же джейсон от ВБ проходит на ура. Кто сталкивался. Подозреваю что дело в кодировке ответа, но как победить - хз. Код ниже
Об = СоздатьОбъект("AddIn.HTTPS77");
Об.УстановитьЗаголовокЗапроса("Content-Type","application/json; charset=UTF-8");
Об.УстановитьЗаголовокЗапроса("Client-Id",.НомерКлиентаОзон);
Об.УстановитьЗаголовокЗапроса("Api-Key",ТокенОзон);
возв = об.Обработать("https://api-seller.ozon.ru/v3/posting/fbs/list","POST",ТекстЗапроса,0,);
Если Найти(СокрЛП(Об.СтрокаСостоянияОтвета), "200")>0 Тогда
СП = глРазборJSON(возв); // вот тут имеем ошибку
тут функция разбора джейсона, но вряд ли она интересна |
---|
Функция глРазборJSON(Знач Стр) Экспорт //На входе строка в текущей системной кодировке
Перем scriptCtrl,Рез,сп,РегВыр,код;
Если ПустаяСтрока(Стр)=1 Тогда Возврат СоздатьОбъект("СписокЗначений");КонецЕсли;
scriptCtrl = СоздатьОбъект("MSScriptControl.ScriptControl");
scriptCtrl.Language="jscript";
код = "
|
| function parseJSON(strJSON) {
| var tmpFunc = (new Function('return('+strJSON+');'))();
| return(tmpFunc);
| }
|
| // Получить элемент массива
| function aGet(Array, index) {
| return(Array[index]);
| }
|
| // Получить ключ пары по индексу
| function oKey(Obj, index) {
| var size = 0, key;
| for (key in Obj) {
| if (size == index) break;
| if (Obj.hasOwnProperty(key)) size++;
| }
| return(key);
| }
|
| // Получить значение пары по ключу
| function oValueByKey(Obj, key) {
| return(Obj[key]);
| }
|
| //Получить количество пар в объекте
| Object.size = function(obj) {
| var size = 0, key;
| for (key in obj) {
| if (obj.hasOwnProperty(key)) size++;
| }
| return(size);
| }
|
| //Получить размер объекта (количество пар в нём)
| function oSize(Obj) {
| return(Object.size(Obj));
| }
|
| // Получить тип объекта (number, string, object, array)
| function eType(Element) {
| if (Element instanceof Array) {
| return(""array"");
| } else if (Object.prototype.toString.call(Element) === '[object Array]') {
| return(""array"");
| } else {
| return(typeof(Element));
| }
| }
|";
scriptCtrl.AddCode(код);
РегВыр = СоздатьОбъект("VBScript.RegExp");
РегВыр.IgnoreCase=1; РегВыр.Global=1; РегВыр.Multiline=1;
РегВыр.Pattern="([^\\])\\([^\\])";
Стр = РегВыр.Replace(Стр,"$1\\$2");
Рез = scriptCtrl.run("parseJSON", стр );
сп = jsonВСписок(Рез,scriptCtrl);
Возврат сп;
КонецФункции
Показать |
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)
Для начала - сравнить количество открывающих и закрывающих скобок.
А перво-наперво - проверить объем: если мне не изменяет склероз, то у 7.7 есть ограничение на размер строковой переменной, 64к или около того.
У вас ведь "возв" - это строка?
Ну как их сравнить.
Не знаю - файлы у вас, а не у меня. :)
Содержимое разное. Структура разная
Ясное дело - если бы все было одинаковое, то и ошибки бы не было.
Для начала - сравнить количество открывающих и закрывающих скобок.
А перво-наперво - проверить объем: если мне не изменяет склероз, то у 7.7 есть ограничение на размер строковой переменной, 64к или около того.
У вас ведь "возв" - это строка?
(1)
Вот это тоже в скрипте выполнить, сохранить этим-же скриптом в файл, потом скормить скрипту, для разбора файл, а не строку...
Об = СоздатьОбъект("AddIn.HTTPS77");
Об.УстановитьЗаголовокЗапроса("Content-Type","application/json; charset=UTF-8");
Об.УстановитьЗаголовокЗапроса("Client-Id",.НомерКлиентаОзон);
Об.УстановитьЗаголовокЗапроса("Api-Key",ТокенОзон);
возв = об.Обработать("https://api-seller.ozon.ru/v3/posting/fbs/list","POST",ТекстЗапроса,0,);
Об.УстановитьЗаголовокЗапроса("Content-Type","application/json; charset=UTF-8");
Об.УстановитьЗаголовокЗапроса("Client-Id",.НомерКлиентаОзон);
Об.УстановитьЗаголовокЗапроса("Api-Key",ТокенОзон);
возв = об.Обработать("https://api-seller.ozon.ru/v3/posting/fbs/list","POST",ТекстЗапроса,0,);
Вот это тоже в скрипте выполнить, сохранить этим-же скриптом в файл, потом скормить скрипту, для разбора файл, а не строку...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот