|
v7: JSON и 1С7.7 | ☑ | ||
---|---|---|---|---|
0
Sam1C
05.05.17
✎
13:14
|
Всем Привет! Может есть у кого готовый вариант получения из JSON в 1С , или какая внешняя компонента для работы с форматом JSON в связке с 1С.
Нашел тут: http://catalog.mista.ru/public/252791/ Хотел посмотреть, но денег просят( |
|||
1
Ц_У
05.05.17
✎
13:18
|
Гугл может все, что угодно...
https://github.com/r72cccp/1C77_JSON_parser |
|||
2
Смотрящий
05.05.17
✎
13:18
|
(0) Дорж денег проsит или аvтор ?
|
|||
3
Sam1C
05.05.17
✎
13:43
|
(2) Что такое Дорж?
|
|||
4
ADirks
05.05.17
✎
13:45
|
этого добра кругом навалом
например Процедура JSON_Init() Если JSON_ctrl <> Неопределено Тогда Возврат; КонецЕсли; JSON_ctrl = СоздатьОбъект("MSScriptControl.ScriptControl"); JSON_ctrl.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)); | } | } |"; JSON_ctrl.AddCode(код); КонецПроцедуры Функция jsonВСписок(obj) //Сообщить(JSON_ctrl.run("oSize", obj)); //Размер объекта (количество пар ключ-значение) //Сообщить(JSON_ctrl.run("oKey", obj, 1)); //Ключ пары с номером 1 //Сообщить(JSON_ctrl.run("oValueByKey", obj, "id")); //Получить значение объекта по ключу //Сообщить(JSON_ctrl.run("aGet", obj.products, 0).id); //Получить Элемент массива с индексом 0 //Сообщить(JSON_ctrl.run("eType", obj.products)); //Получить тип объекта, даже если он - массив сп = СоздатьОбъект("СписокЗначений"); ТипОбъекта = JSON_ctrl.run("eType", obj); Если ТипОбъекта = "object" Тогда Для н = 0 По JSON_ctrl.run("oSize", obj) - 1 Цикл Ключ = JSON_ctrl.run("oKey", obj, н); Значение = JSON_ctrl.run("oValueByKey", obj, Ключ); ТипЗнач = JSON_ctrl.run("eType", Значение); Если Найти("number, string", ТипЗнач) > 0 Тогда сп.ДобавитьЗначение(Значение, Ключ); ИначеЕсли Найти("object, array", ТипЗнач) > 0 Тогда сп.ДобавитьЗначение(jsonВСписок(Значение), Ключ); КонецЕсли; КонецЦикла; ИначеЕсли ТипОбъекта = "array" Тогда Для н = 0 По obj.length - 1 Цикл Значение = JSON_ctrl.run("aGet", obj, н); ТипЗнач = JSON_ctrl.run("eType", Значение); Если Найти("number, string", ТипЗнач) > 0 Тогда сп.ДобавитьЗначение(Значение, СокрЛП(Строка(н))); ИначеЕсли Найти("object, array", ТипЗнач) > 0 Тогда сп.ДобавитьЗначение(jsonВСписок(Значение), СокрЛП(Строка(н))); КонецЕсли; КонецЦикла; КонецЕсли; Возврат сп; КонецФункции Функция сз_FromJSON(стр) Экспорт JSON_Init(); obj = JSON_ctrl.run("parseJSON", стр); //Работает сз = jsonВСписок(obj); Возврат сз; КонецФункции |
|||
5
Sam1C
05.05.17
✎
13:46
|
(1) Спасибо, но это не эта обработка:http://catalog.mista.ru/public/252791/
Там в описание: Результатом работы является индексированнная таблица (см. 1С++ ИндексированнаяТаблица ) а в этом список значений |
|||
6
ADirks
05.05.17
✎
13:47
|
переделай, ётить
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |