Взято тут: http://pastebin.com/HFaEaETX
Спасибо Хабраюзеру http://habrahabr.ru/users/igrishaev/
Функция json(Объект) Тип = ТипЗнч(Объект); Если Тип = Тип("Массив") ИЛИ Тип = Тип("ТаблицаЗначений") ИЛИ Тип = Тип("СписокЗначений") Тогда Количество = Объект.Количество(); Результат = "["; Для н = 0 ПО Количество - 1 Цикл Результат = Результат + json(Объект[н]) + ?(н < Количество - 1, ", ", ""); КонецЦикла; Результат = Результат + "]"; Возврат Результат; ИначеЕсли Тип = Тип("Структура") ИЛИ Тип = Тип("Соответствие") Тогда н = 0; Количество = Объект.Количество(); Результат = "{"; Для Каждого Пара Из Объект Цикл Результат = Результат + json(Пара.Ключ) + ": " + json(Пара.Значение) + ?(н < Количество - 1, ", ", ""); н = н + 1; КонецЦикла; Результат = Результат + "}"; Возврат Результат; ИначеЕсли Тип = Тип("СтрокаТаблицыЗначений") Тогда Результат = "{"; Колонки = Объект.Владелец().Колонки; Количество = Колонки.Количество(); Для н = 0 ПО Количество - 1 Цикл Ключ = Колонки[н].Имя; Результат = Результат + json(Ключ) + ": " + json(Объект[Ключ]) + ?(н < Количество - 1, ", ", ""); КонецЦикла; Результат = Результат + "}"; Возврат Результат; ИначеЕсли Тип = Тип("ЭлементСпискаЗначений") Тогда Возврат json(Объект.Значение); ИначеЕсли Тип = Тип("Строка") Тогда Результат = Объект; Результат = СтрЗаменить(Результат, "\", "\\"); Результат = СтрЗаменить(Результат, "/", "\/"); Результат = СтрЗаменить(Результат, """", "\"""); Результат = СтрЗаменить(Результат, Символы.ВК, "\r"); Результат = СтрЗаменить(Результат, Символы.Таб, "\t"); Результат = СтрЗаменить(Результат, Символы.ПС, "\n"); Возврат """" + Результат + """"; ИначеЕсли Тип = Тип("Число") Тогда Возврат Формат(Объект, "ЧРД=.; ЧН=0; ЧГ=0"); ИначеЕсли Тип = Тип("Булево") Тогда Возврат Формат(Объект, "БЛ=false; БИ=true"); ИначеЕсли Тип = Тип("Дата") Тогда Возврат json(Формат(Объект, "ДФ=yyyy-MM-ddThh:mm:ss")); ИначеЕсли Объект = Неопределено ИЛИ Объект = Null Тогда Возврат "null"; ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(Тип) Или Документы.ТипВсеСсылки().СодержитТип(Тип) Тогда Возврат json(Объект.УникальныйИдентификатор()); Иначе Возврат json(Строка(Объект)); КонецЕсли; КонецФункции