Имя: Пароль:
1C
1С v8
Скобки в json
0 ДядяМитяй
 
05.07.18
15:51
Довольно глупая ситуация. Вот у меня код (для примера)

    
    ЗаписьJSON = Новый ЗаписьJSON;
    ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON( , Символы.Таб);
    ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
    ЗаписьJSON.ЗаписатьНачалоМассива();
    
    счД = 1;
    Пока ВыборкаДог.Следующий() Цикл
        
        НомерДог = Строка(ВыборкаДог.Contract.Номер);
        ДатаДог = Строка(ВыборкаДог.Contract.Дата);

        
        
        ЗаписьJSON.ЗаписатьНачалоОбъекта();
        ЗаписьJSON.ЗаписатьИмяСвойства("ContractNumber" + Строка(СчД));
        ЗаписьJSON.ЗаписатьЗначение(НомерДог);
        
        ЗаписьJSON.ЗаписатьИмяСвойства("ContractDate" + Строка(СчД));
        ЗаписьJSON.ЗаписатьЗначение(ДатаДог);
        ЗаписьJSON.ЗаписатьКонецОбъекта();

        счД = счД + 1;
    КонецЦикла;
    
        ЗаписьJSON.ЗаписатьКонецМассива();
        СтрJ = ЗаписьJSON.Закрыть();


Возвращает такое:

[
    {
        "ContractNumber1": "XC000265Y",
        "ContractDate1": "10.08.2013 0:00:00"
    },
    {
        "ContractNumber2": "XC01691LY",
        "ContractDate2": "10.06.2018 0:00:00"
    }
]


Как мне все это заключить в еще одни фигурные скобки - без лишних символов? Если добавить еще начало и конец объекта, то требуется установить его свойство и получается что-то вроде { "":[
а надо {[
1 Fram
 
05.07.18
15:53
Кому надо?
2 Kigo_Kigo
 
05.07.18
15:55
Узнать код символа и вставить как Текс + Симв(КодСимвола) + текст + Симв(КодСимвола) и так далее
3 Скиурус
 
05.07.18
15:57
>>а надо {[
Я взял твой пример и заключил его в фигурные скобки. И валидотор JSON сказал мне, что "Invalid JSON format!! Unable to process your request."

Поэтому очевидный ответ: раз надо, значит сделай "{" + МойКодJSON + "}"
4 arsik
 
гуру
05.07.18
15:58
Сделай сначала
ЗаписатьНачалоОбъекта()
а уже потом все остальное.
Объект в фигурных скобках, массив в квадратных. Тебе объект передать надо
5 ДядяМитяй
 
05.07.18
16:05
(4) Вот. Я про это и спрашивал. Если началообъекта сделать, то обязательно за этим ЗаписатьИмяСвойства(). И вставляется двоеточие.
(1) "принимающей стороне". разработчику сайта.
6 Fram
 
05.07.18
16:07
(5) принимающая сторона в курсе что это уже не json получится?
7 Мыш
 
05.07.18
16:09
(5) Делай обертку в скобки после выгрузки текста.
8 ДядяМитяй
 
05.07.18
16:53
(6) Да, я ей уже сообщил))) Сам в валидаторе проверил.
9 ДядяМитяй
 
05.07.18
16:57
(7) Это понятно. Я думал штатными средствами все сделать, чтоб красиво и опрятно. А меня, похоже, просто в заблуждение ввели.
Можно тему закрывать.
10 Chameleon1980
 
06.07.18
05:05
может Массив в Массиве попробовать в Json что будет?
11 Chameleon1980
 
06.07.18
05:08
без начать и закончить, а ЗаписатьJson
12 Chameleon1980
 
06.07.18
05:08
ой. т.е. у тебя получится массив структур
13 Chameleon1980
 
06.07.18
05:15
&НаКлиенте
Процедура СформироватьФайл(Команда)

    ЗаписьJSon=Новый ЗаписьJSON;
    
    ЗаписьJSon.ОткрытьФайл("d:\MS.json");
    
    МассивСтруктур=Новый Массив;
    
    СтруктураДанных=Новый Структура("Поле1, Поле2");
    
    СтруктураДанных.Поле1="Значение поля 1";
    СтруктураДанных.Поле2="Значение полня 2";
    
    МассивСтруктур.Добавить(СтруктураДанных);
    
    СтруктураДанных.Поле1="Новое значение поля 1";
    СтруктураДанных.Поле2="Новое значение поля 2";
    
    МассивСтруктур.Добавить(СтруктураДанных);
    
    ЗаписатьJSON(ЗаписьJSon, МассивСтруктур);
    
    ЗаписьJSon.Закрыть();
    
КонецПроцедуры


[
{
"Поле1": "Новое значение поля 1",
"Поле2": "Новое значение поля 2"
},
{
"Поле1": "Новое значение поля 1",
"Поле2": "Новое значение поля 2"
}
]



аааа. тебе фигурные нужно а не хвадратные.
14 Chameleon1980
 
06.07.18
05:18
тебе типа структуры в структуре нужно, наверное
только без имени поля
15 Chameleon1980
 
06.07.18
05:22
ооо
16 Chameleon1980
 
06.07.18
05:26
НастройкиСериализацииJSON.СериализовыватьМассивыКакОбъекты (JSONSerializerSettings.SerializeArraysAsObjects)
НастройкиСериализацииJSON (JSONSerializerSettings)
СериализовыватьМассивыКакОбъекты (SerializeArraysAsObjects)
Использование:

Чтение и запись.
Описание:

Тип: Булево.
Если свойство имеет значение Истина, то массив будет сериализован как объект JSON следующего вида:
{
"1":"Значение1",
"2":"Значение2",
"3":"Значение3"
}
Если свойство имеет значение Ложь, то массив будет записан как массив JSON.

блин. тоже не так.

{
"0": {
"Поле1": "Новое значение поля 1",
"Поле2": "Новое значение поля 2"
},
"1": {
"Поле1": "Новое значение поля 1",
"Поле2": "Новое значение поля 2"
},
"2": {
"Поле1": "Новое значение поля 1",
"Поле2": "Новое значение поля 2"
},
"3": {
"Поле1": "Новое значение поля 1",
"Поле2": "Новое значение поля 2"
}
}

свое писать. только кто поймет потом эту строку?
17 Chameleon1980
 
06.07.18
05:28
+ попробуй для своего кода
в
ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON( , Символы.Таб);

указать СериализовыватьМассивыКакОбъекты в истину