![]() |
![]() |
![]() |
|
v7: Запись/чтение JSON под 1С7.7 | ☑ | ||
---|---|---|---|---|
0
Garykom
гуру
28.04.15
✎
14:40
|
Есть что "почти готовое" желательно без ВК и прочего.
Т.е. на коде 77. |
|||
1
Salimbek
28.04.15
✎
14:51
|
(0) А как ты себе это представляешь? Т.к. JSON всего лишь разметка, а самое главное - это как твой "объект" преобразуется в понятный другой стороне набор полей.
|
|||
2
Serginio1
28.04.15
✎
15:03
|
ВК и прочее упрощают жизнь и позволяют использовать уже готовые решения.
|
|||
3
Serginio1
28.04.15
✎
15:06
|
Можно это реализовать и на нет, предварительно описав классы
http://msdn.microsoft.com/ru-ru/library/bb412179(v=vs.110).aspx и http://catalog.mista.ru/public/238584/ Есть генераторы классов http://jsonclassgenerator.codeplex.com/ http://stackoverflow.com/questions/6358745/generate-c-sharp-classes-from-json-schema |
|||
4
Кирпич
28.04.15
✎
15:08
|
(0) вот здесь вроде есть. только на восьмерке
http://catalog.mista.ru/public/281276/ |
|||
5
Garykom
гуру
28.04.15
✎
15:11
|
(1) приблизительно так
Функция JSON(Объект, Детализация = 0) Экспорт Тип = ТипЗначенияСтр(Объект); Если Тип = "Справочник" Тогда Результат = СоздатьОбъект("Текст"); Вид = Объект.Вид(); Идентификатор = Метаданные.Справочник(Вид).Идентификатор; ПолныйИдентификатор = Метаданные.Справочник(Вид).ПолныйИдентификатор(); Результат.ДобавитьСтроку("{"); Результат.ДобавитьСтроку(""""+ПолныйИдентификатор+""""+": {"); Код = Объект.Код; Результат.ДобавитьСтроку("""Код"": "+""""+Код+""","); Наименование = Объект.Наименование; Результат.ДобавитьСтроку("""Наименование"": "+""""+Наименование+""""); Если Детализация>=1 Тогда Результат.ДобавитьСтроку(","); КоличествоРеквизитов = Метаданные.Справочник(Вид).Реквизит(); Для НомерРеквизита=1 По КоличествоРеквизитов Цикл Реквизит = Метаданные.Справочник(Вид).Реквизит(НомерРеквизита); РеквизитИдентификатор = Реквизит.Идентификатор; Результат.ДобавитьСтроку(""""+РеквизитИдентификатор+""""+": "); РеквизитЗначение = Объект.ПолучитьАтрибут(РеквизитИдентификатор); лТекстРеквизит = json(РеквизитЗначение, Детализация-1); КоличествоСтрокРеквизит = лТекстРеквизит.КоличествоСтрок(); Для НомерСтрокиРеквизит=1 По КоличествоСтрокРеквизит Цикл Результат.ДобавитьСтроку(лТекстРеквизит.ПолучитьСтроку(НомерСтрокиРеквизит)); КонецЦикла; Если НомерРеквизита<КоличествоРеквизитов Тогда Результат.ДобавитьСтроку(","); Иначе КонецЕсли; КонецЦикла; КонецЕсли; Результат.ДобавитьСтроку("}"); Результат.ДобавитьСтроку("}"); Возврат Результат; ИначеЕсли (Тип = "Документ") Тогда // еще не наваяно ИначеЕсли (Тип = "ТаблицаЗначений") ИЛИ (Тип = "СписокЗначений") Тогда // еще не наваяно ИначеЕсли Тип = "Строка" Тогда Результат = СоздатьОбъект("Текст"); лРезультат = СокрЛП(Объект); лРезультат = СтрЗаменить(лРезультат, "\", "\\"); лРезультат = СтрЗаменить(лРезультат, "/", "\/"); лРезультат = СтрЗаменить(лРезультат, """", "\"""); лРезультат = СтрЗаменить(лРезультат, Симв(13), "\r"); лРезультат = СтрЗаменить(лРезультат, СимволТабуляции, "\t"); лРезультат = СтрЗаменить(лРезультат, Симв(10), "\n"); лРезультат = """" + лРезультат + """"; Результат.ДобавитьСтроку(лРезультат); Возврат Результат; ИначеЕсли Тип = "Число" Тогда Результат = СоздатьОбъект("Текст"); Результат.ДобавитьСтроку(Объект); Возврат Результат; ИначеЕсли Тип = "Дата" Тогда Результат = СоздатьОбъект("Текст"); Результат.ДобавитьСтроку(json(Формат(Объект, "ДГГГГ-ММ-ДД"))); Возврат Результат; Иначе Результат = СоздатьОбъект("Текст"); Результат.ДобавитьСтроку(json(Строка(Объект))); Возврат Результат; КонецЕсли; КонецФункции |
|||
6
Serginio1
28.04.15
✎
15:11
|
||||
7
Garykom
гуру
28.04.15
✎
15:12
|
(2) (3) ВК и внешние не хочу
(4) дык на 77 нуна. сижу ваяю |
|||
8
Garykom
гуру
28.04.15
✎
15:12
|
(6) 8-ка
|
|||
9
Salimbek
28.04.15
✎
15:27
|
(5) Периодические реквизиты еще есть, а еще бывают справочники без Кода и без Наименования.
|
|||
10
Garykom
гуру
28.04.15
✎
15:30
|
(9) у меня не бывают ))
|
|||
11
Кирпич
28.04.15
✎
15:34
|
(7) // дык на 77 нуна.
да не велика разница |
|||
12
Garykom
гуру
28.04.15
✎
15:41
|
(11) если бы
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |