|   |   | 
| 
 | Запись в JSON | ☑ | ||
|---|---|---|---|---|
| 0
    
        antihacker 11.03.19✎ 15:29 | 
        Всем привет !
 Ни как не могу записать JSON в таком формате [{"Header":11111,"0":[{"id":"***"},{"id":"***"}]},{"Header":22222,"0":[{"id":"***"},{"id":"***"}]},{"Header":11111,"0":[{"id":"-----"},{"id":"-----"}]},{"Header":22222,"0":[{"id":"-----"},{"id":"-----"}]}] Подскажите люди добрые. | |||
| 1
    
        Ёпрст гуру 11.03.19✎ 15:31 | 
        (0) ошибка в 24 строке     | |||
| 2
    
        antihacker 11.03.19✎ 15:32 | 
        Вот мой код
 Запись = Новый ЗаписьJSON; Запись.УстановитьСтроку(); Запись.ЗаписатьНачалоМассива(); //Отбор = Новый Структура; //Отбор.Вставить("ЭтоГруппа",ЛОжь); //СписокНоменклатур = Справочники.Номенклатура.Выбрать(); Для Каждого ТекНоменклатура Из Объект.ТЧСписокНоменклатур Цикл Запись.ЗаписатьНачалоОбъекта(); Запись.ЗаписатьИмяСвойства("nom_id"); Запись.ЗаписатьЗначение(Число(ТекНоменклатура.КодСистемыОР)); Запись.ЗаписатьИмяСвойства("id_from_client"); Запись.ЗаписатьЗначение(СокрЛП(ТекНоменклатура.КодНоменклатуры)); Запись.ЗаписатьИмяСвойства("nomenclature_name_from_OR"); Запись.ЗаписатьЗначение(СокрЛП(ТекНоменклатура.ИмяНоменклатурыИзОР)); Запись.ЗаписатьИмяСвойства("nomenclature_name"); Запись.ЗаписатьЗначение(СокрЛП(ТекНоменклатура.Номенклатура.Наименование)); Запись.ЗаписатьИмяСвойства("unit"); Запись.ЗаписатьЗначение(СокрЛП(ТекНоменклатура.ЕИ)); Запись.ЗаписатьИмяСвойства("nomenclature_price"); Запись.ЗаписатьЗначение(Число(ТекНоменклатура.Цена)); Запись.ЗаписатьКонецОбъекта(); КонецЦикла; Запись.ЗаписатьКонецМассива(); strJSON = Запись.Закрыть(); Возврат strJSON; | |||
| 3
    
        Ёпрст гуру 11.03.19✎ 15:41 | 
        (0)
 ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = Ложь; ЗаписьJSON.УстановитьСтроку(); ЗаписьJSON.ЗаписатьНачалоМассива(); Структура = Новый Структура; Структура.Вставить("Header",11111); МассивПараметров = Новый Массив; СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("id",1); МассивПараметров.Добавить(СтруктураПараметров); СтруктураПараметров = Новый Структура; СтруктураПараметров.Вставить("id",2); МассивПараметров.Добавить(СтруктураПараметров); Структура.Вставить("O",МассивПараметров); ЗаписатьJSON(ЗаписьJSON,Структура); ЗаписьJSON.ЗаписатьКонецМассива(); Сообщиь(ЗаписьJSON.Закрыть()); | |||
| 4
    
        Ёпрст гуру 11.03.19✎ 15:41 | 
        надеюсь, разберешься..     | |||
| 5
    
        polosov 11.03.19✎ 15:42 | 
        (0) Ключи в виде цифр не поддерживаются в 1с. Формируй текст сам.     | |||
| 6
    
        Ёпрст гуру 11.03.19✎ 15:46 | 
        (5) это ограничение обходится, путём стрЗаменить на выходе     | |||
| 7
    
        Ёпрст гуру 11.03.19✎ 15:47 | 
        и.. автор видать просто не знает, как вложенные массивы json делать, об этом его вопрос был     | |||
| 8
    
        antihacker 12.03.19✎ 07:10 | 
        Нет я знаю конечно.  Вот пример -  http://v8.1c.ru/o7/201410json/index.htm
 Но не дает мне нужный формат. | |||
| 9
    
        antihacker 12.03.19✎ 09:31 | 
        Вот в таком формате нужен
 [{"Header":"АБП1","1":[{"id":"Оплата труда"},{"id":"2000"}]},{"Header":"АБП2","2":[{"id":"Оплата труда"},{"id":"4000"}]},{"Header":"АБП3","3":[{"id":"Оплата труда"},{"id":"6000"}]},{"Header":"АБП4","4":[{"id":"Оплата труда"},{"id":"8000"}]}] | |||
| 10
    
        antihacker 12.03.19✎ 10:07 | 
        Или же как можно прочесть на PHP  такую строку 
 [{"Header":"ABP","id":["Оплата труда","2000","2500"]},{"Header":"АБП2","id":["Оплата труда","2000","2500"]}] | |||
| 11
    
        Ёпрст гуру 12.03.19✎ 10:09 | 
        (9) И ? см.(3)     | |||
| 12
    
        Ёпрст гуру 12.03.19✎ 10:15 | 
        И если че, в (9) и (10) разные массивы. Тебе что в итоге нннадо ?     | |||
| 13
    
        antihacker 12.03.19✎ 10:22 | 
        Вот это - [{"Header":"ABP","id1":["Gplata trusa","2000","5500"]},{"Header":"АБП2","id":["Оплата труда","2000","2500"]}]
 Читаю вот так foreach ($decoded as $person_name => $person_a) { echo $person_a['Header']; echo "="; foreach ($person_a as $person_name1 => $person_a1) { foreach ($person_a1 as $person_name2 => $person_a2) { echo $person_a2['id']; echo ","; } } echo "|*|"; //echo $person_a['Header']; } Результат ABP=G,2,5,|*|АБП2=�,2,2,|*|ABP=G,2,5,|*|АБП2=�,2,2,|*| Почему то берет только первые символы | |||
| 14
    
        Ёпрст гуру 12.03.19✎ 10:24 | 
        Если не знаешь, как правильно "собрать" json в 1с-ине, делай обратную операцию: то что в  (9) или в (10) кидаешь в в файлик вася.json, ну и дальше смотришь в отладчике МассивJSON:
 ЧтениеJSON = Новый ЧтениеJSON; ЧтениеJSON.ОткрытьФайл("f:\вася.json"); МассивJSON= ПрочитатьJSON(ЧтениеJSON); | |||
| 15
    
        Asmody 12.03.19✎ 10:26 | 
        (13) в твоем php украли json_decode()?     | |||
| 16
    
        antihacker 12.03.19✎ 10:27 | 
        Нее он в начале есть конечно
 $decoded = json_decode(($_GET['param']), true); | |||
| 17
    
        Asmody 12.03.19✎ 10:36 | 
        Возможно, у тебя на стороне php с кодировками беда.     | |||
| 18
    
        antihacker 12.03.19✎ 10:47 | 
        Да нет. Вот есть
 <?php header("Content-Type: text/html; charset=utf-8"); | |||
| 19
    
        Ёпрст гуру 12.03.19✎ 10:54 | 
        (18) это, тебе надо получить от твоего сервера json или послать туда ? Или и то и то ? И...проблема то у тебя где ? В 1с-ине не можешь прочитать/создать? Или на стороне сервера?     | |||
| 20
    
        Ёпрст гуру 12.03.19✎ 10:55 | 
        а то в (0) пишешь про 1с, в (13) про php     | |||
| 21
    
        antihacker 12.03.19✎ 11:24 | 
        Мне надо принять такой джисон
 [{"Header":"АБП1","1":[{"id":"Оплата труда"},{"id":"2000"},{"id":"2500"}]},{"Header":"АБП2","2":[{"id":"Оплата труда"},{"id":"4000"}]},{"Header":"АБП3","3":[{"id":"Оплата труда"},{"id":"6000"}]},{"Header":"АБП4","4":[{"id":"Оплата труда"},{"id":"8000"}]}] Но в 1с получается только [{"Header": "АБП","id": ["1","2"]}] Разницу видите ? | |||
| 22
    
        Ёпрст гуру 12.03.19✎ 11:28 | 
        (21) биомать а ? принять где ? в 1с или на твоём сервисе ?     | |||
| 23
    
        antihacker 12.03.19✎ 11:29 | 
        на сервисе PHP     | |||
| 24
    
        Ёпрст гуру 12.03.19✎ 11:30 | 
        и проблема твоя в чем ? не можешь создать json нужной структуры или прочитать его ?     | |||
| 25
    
        Ёпрст гуру 12.03.19✎ 11:31 | 
        (23) т.е твоя проблема, что в 1с-ине не можешь создать json нужной структуры или что ?
 или на сервисе PHP не можешь прочитать json ? | |||
| 26
    
        antihacker 12.03.19✎ 11:35 | 
        Не могу в 1С создать [{"Header":"АБП1","1":[{"id":"Оплата труда"},{"id":"2000"},{"id":"2500"}]},{"Header":"АБП2","2":[{"id":"Оплата труда"},{"id":"4000"}]},{"Header":"АБП3","3":[{"id":"Оплата труда"},{"id":"6000"}]},{"Header":"АБП4","4":[{"id":"Оплата труда"},{"id":"8000"}]}]     | |||
| 27
    
        Вафель 12.03.19✎ 11:38 | 
        а если соответствие вместо структуры?     | |||
| 28
    
        antihacker 12.03.19✎ 11:42 | 
        Вафель, не хочу усложнять     | |||
| 29
    
        Fragster гуру 12.03.19✎ 11:42 | 
        (27) а там порядок полей кривой     | |||
| 30
    
        Вафель 12.03.19✎ 11:43 | 
        а что нужен порядок полей? это же жисон     | |||
| 31
    
        Fragster гуру 12.03.19✎ 11:44 | 
        Соответствие = Новый Соответствие();
 Соответствие.Вставить("Header", "1234"); Массив = Новый Массив(); СоответствиеМассив = Новый Соответствие(); СоответствиеМассив.Вставить("id", "Оплата труда"); Массив.Добавить(СоответствиеМассив); СоответствиеМассив = Новый Соответствие(); СоответствиеМассив.Вставить("id", 2000); Массив.Добавить(СоответствиеМассив); СоответствиеМассив = Новый Соответствие(); СоответствиеМассив.Вставить("id", 2500); Массив.Добавить(СоответствиеМассив); Соответствие.Вставить("1", Массив); Соответствие.Вставить("2", Массив); МассивОбщий = Новый Массив(); МассивОбщий.Добавить(Соответствие); Запись = Новый ЗаписьJSON; Запись.УстановитьСтроку(); ЗаписатьJSON(Запись, МассивОбщий); Результат = Запись.Закрыть(); (30) видимо, на той стороне такой же, как и на этой. А вообще гляжу на струкуту этого json и вижу, что сочинял её третий такой же. Ну не логичная она ни разу. | |||
| 32
    
        Fragster гуру 12.03.19✎ 11:45 | 
        * такой же программист, как и на этой.     | |||
| 33
    
        antihacker 12.03.19✎ 11:46 | 
        Пример от сюда взял
 http://v8.1c.ru/o7/201410json/index.htm | |||
| 34
    
        Ёпрст гуру 12.03.19✎ 11:48 | 
        (26) На вот, развлекайся
 
 | |||
| 35
    
        Ёпрст гуру 12.03.19✎ 11:50 | 
        (31) блин, про соответствие забыл, ну да..так проще, не надо морочиться с ключами - цифрами.     | |||
| 36
    
        antihacker 12.03.19✎ 11:52 | 
        Вот именно по задаче ключи не имеют значения, так в массивах есть уникальные данные. На них и будем ориентироваться.     | |||
| 37
    
        Вафель 12.03.19✎ 11:53 | 
        если ключи не важны, то пиши например ключ "ТЧ"     | |||
| 38
    
        Garykom гуру 12.03.19✎ 11:54 | 
        (26) У тя json кривой и не валидный, поэтому и не получается     | |||
| 39
    
        Fragster гуру 12.03.19✎ 11:54 | 
        (38)да не, валидный. но структуру придумывал победитель специальной олимпиады     | |||
| 40
    
        Вафель 12.03.19✎ 11:55 | 
        вполне валидный dgjkyt dfk | |||
| 41
    
        Вафель 12.03.19✎ 11:55 | ||||
| 42
    
        Ёпрст гуру 12.03.19✎ 11:55 | 
 | |||
| 43
    
        Fragster гуру 12.03.19✎ 11:55 | 
        чтобы неудобно было и отправителю и получателю     | |||
| 44
    
        Garykom гуру 12.03.19✎ 11:57 | 
        (41) Форматтер ничего не проверяет а просто пытается отформатировать и у меня вышла хрень     | |||
| 45
    
        Вафель 12.03.19✎ 11:58 | 
        (44) там есть кнопка валидировать     | |||
| 46
    
        Ёпрст гуру 12.03.19✎ 12:02 | 
        Можно еще JSToll в np++     | |||
| 47
    
        Garykom гуру 12.03.19✎ 12:03 | 
        (45) Понял меня сбили одинаковые "id" но оно же в объекты обернуто внутри массива     | |||
| 48
    
        antihacker 20.03.19✎ 10:42 | 
        Вот  результат
 [ { "1": [ { "id": "Оплата труда" }, { "id": "2000" }, { "id": "3000" } ], "Header": "АБП1" }, { "1": [ { "id": "Оплата труда" }, { "id": "2000" }, { "id": "3000" } ], "Header": "АБП2", "2": [ { "id": "Еще какая хрень" }, { "id": "1000" } ] }, { "1": [ { "id": "Оплата труда" }, { "id": "2000" }, { "id": "3000" } ], "Header": "АБП3", "2": [ { "id": "Еще какая хрень" }, { "id": "1000" } ], "3": [ { "id": "От ведь как" }, { "id": "6000" }, { "id": "8000" }, { "id": "9000" } ] } ] не могу понять почему "Header": "АБП1" падает в конец ? | |||
| 49
    
        Вафель 20.03.19✎ 10:43 | 
        так тебе еще и порядок реквизитов нужен?     | |||
| 50
    
        antihacker 20.03.19✎ 10:45 | 
        Ну конечно     | |||
| 51
    
        Вафель 20.03.19✎ 10:46 | 
        (50) ну тогда только по тегово записывать через ЗаписьXML     | |||
| 52
    
        antihacker 20.03.19✎ 10:46 | 
        Там даже не в порядке, а в формате. Почему то первы массив  "Header": "АБП1" имепет не правильный формат     | |||
| 53
    
        Вафель 20.03.19✎ 10:46 | 
        *ЗаписьJSON     | |||
| 54
    
        antihacker 22.03.19✎ 09:40 | 
        Вафель, что это означает ?  *ЗаписьJSON ?     | |||
| 55
    
        antihacker 22.03.19✎ 09:45 | 
        Вот код
 ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = Ложь; ЗаписьJSON.УстановитьСтроку(); ЗаписьJSON.ЗаписатьНачалоМассива(); Соответствие = Новый Соответствие; Соответствие.Вставить("Header","АБП"); //ЗаписатьJSON(ЗаписьJSON,Соответствие); МассивПараметров = Новый Массив; СоответствиеПараметров = Новый Соответствие; СоответствиеПараметров.Вставить("id","Оплата труда"); МассивПараметров.Добавить(СоответствиеПараметров); СоответствиеПараметров = Новый Соответствие; СоответствиеПараметров.Вставить("id","2000"); МассивПараметров.Добавить(СоответствиеПараметров); СоответствиеПараметров = Новый Соответствие; СоответствиеПараметров.Вставить("id","3000"); МассивПараметров.Добавить(СоответствиеПараметров); Соответствие.Вставить("1",МассивПараметров); //ЗаписатьJSON(ЗаписьJSON,Соответствие); МассивПараметров = Новый Массив; СоответствиеПараметров = Новый Соответствие; СоответствиеПараметров.Вставить("id","Оплата труда2222"); МассивПараметров.Добавить(СоответствиеПараметров); СоответствиеПараметров = Новый Соответствие; СоответствиеПараметров.Вставить("id","22000"); МассивПараметров.Добавить(СоответствиеПараметров); СоответствиеПараметров = Новый Соответствие; СоответствиеПараметров.Вставить("id","333000"); МассивПараметров.Добавить(СоответствиеПараметров); Соответствие.Вставить("2",МассивПараметров); ЗаписатьJSON(ЗаписьJSON,Соответствие); Вот результат [ { "1": [ { "id": "Оплата труда" }, { "id": "2000" }, { "id": "3000" } ], "Header": "АБП", "2": [ { "id": "Оплата труда2222" }, { "id": "22000" }, { "id": "333000" } ] } ] | |||
| 56
    
        Ёпрст гуру 22.03.19✎ 09:51 | 
        Это же очевидно. Пропущена строка новый соответствие и запись 
 Json | |||
| 57
    
        antihacker 22.03.19✎ 09:53 | 
        Ты про закомпостированные строчки ?     | |||
| 58
    
        antihacker 22.03.19✎ 09:53 | 
        закоментированные строчки ?     | |||
| 59
    
        novichok79 22.03.19✎ 09:58 | 
        типа 1С так не может, да?
 Функция СериализоватьВJSON(Объект) Экспорт ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = Ложь; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет); ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); Попытка ЗаписатьJSON(ЗаписьJSON, Объект); ТелоJSON = ЗаписьJSON.Закрыть(); Исключение ТелоJSON = ""; КонецПопытки; Возврат ТелоJSON; КонецФункции АррайГлавный = Новый Массив; АррайЁпт = Новый Массив; Для Счетчик = 1 По 3 Цикл HashMAP = Новый Соответствие; HashMAP.Вставить("id", "sick_my_duck" + Формат(Счетчик, "ЧН=;ЧГ=0")); АррайЁпт.Добавить(HashMAP); КонецЦикла ВнешняяХрень = Новый Соответствие; ВнешняяХрень.Вставить("Header", 11111); ВнешняяХрень.Вставить("0", АррайЁпт); АррайГлавный.Добавить(ВнешняяХрень); АррайГлавный.Добавить(ВнешняяХрень); АррайГлавный.Добавить(ВнешняяХрень); JSON = СериализоватьJSON(АррайГлавный); | |||
| 60
    
        novichok79 22.03.19✎ 10:04 | 
        так у тебя "id" - значения соответствия, они повторяются.
 делай тогда "id1", "id2", а потом стрзаменить в конце. | |||
| 61
    
        antihacker 22.03.19✎ 10:07 | 
        Они и должны поворотятся.     | |||
| 62
    
        novichok79 22.03.19✎ 10:16 | 
        &НаСервере
 Функция СериализоватьВJSON(Объект) ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = Ложь; ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет); ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON); Попытка ЗаписатьJSON(ЗаписьJSON, Объект); ТелоJSON = ЗаписьJSON.Закрыть(); Исключение ТелоJSON = ""; КонецПопытки; Возврат ТелоJSON; КонецФункции &НаСервере Функция ЕбалаНаСервере() АБП = Новый Соответствие; АБП.Вставить("АБП1", "1"); АБП.Вставить("АБП2", "2"); АБП.Вставить("АБП3", "3"); АБП.Вставить("АБП4", "4"); АБПОплата = Новый Соответствие; АБПОплата.Вставить("АБП1", "2000"); АБПОплата.Вставить("АБП2", "4000"); АБПОплата.Вставить("АБП3", "6000"); АБПОплата.Вставить("АБП4", "8000"); Перечисление = Новый Массив; Для Каждого КлючЗначение Из АБП Цикл Header = КлючЗначение.Ключ; Value = КлючЗначение.Значение; Amount = АБПОплата.Получить(Header); Времяночка = Новый Соответствие; Времяночка.Вставить("id", "Оплата труда"); Времяночка1 = Новый Соответствие; Времяночка1.Вставить("id", Amount); ПеречислениеВнутр = Новый Массив; ПеречислениеВнутр.Добавить(Времяночка); ПеречислениеВнутр.Добавить(Времяночка1); КонтейнерМусора = Новый Соответствие; КонтейнерМусора.Вставить("Header", Header); КонтейнерМусора.Вставить(Value, ПеречислениеВнутр); Перечисление.Добавить(КонтейнерМусора); КонецЦикла; Ебала = СериализоватьВJSON(Перечисление); Возврат Ебала; КонецФункции | |||
| 63
    
        novichok79 22.03.19✎ 10:16 | 
        [{"2":[{"id":"Оплата труда"},{"id":"4000"}],"Header":"АБП2"},{"3":[{"id":"Оплата труда"},{"id":"6000"}],"Header":"АБП3"},{"4":[{"id":"Оплата труда"},{"id":"8000"}],"Header":"АБП4"},{"1":[{"id":"Оплата труда"},{"id":"2000"}],"Header":"АБП1"}]     | |||
| 64
    
        novichok79 22.03.19✎ 10:19 | 
        ну если порядок нужен, то только через ЗаписьJSON или вручную сериализовать, структура у тебя текстовая вообще ненапряжно.     | |||
| 65
    
        Ёпрст гуру 22.03.19✎ 10:49 | 
        (54) под каждый элемент массива нужно новое соответствие и его запись в json     | |||
| 66
    
        antihacker 22.03.19✎ 13:00 | 
        Нее мне нужен такой порядок
 [{"Header":"АБП","0":[{"id":"Оплата труда"},{"id":"1"},{"id":"2"},{"id":"Оплата труда"},{"id":"3"},{"id":"4"}]}] | |||
| 67
    
        antihacker 22.03.19✎ 13:02 | 
        ОЙ СОРИИИ.
 Такой [{"Header":"АБП","0":[{"id":"Оплата труда"},{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"}],"1":[{"id":"Оплата труда"},{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"}]}] | |||
| 68
    
        antihacker 22.03.19✎ 13:05 | 
        Если полностью то так
 [{"Header":"АБП","0":[{"id":"Оплата труда"},{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"}],"1":[{"id":"Оплата труда"},{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"}]},{"Header":"АБП1","0":[{"id":"Оплата труда"},{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"}],"1":[{"id":"Оплата труда"},{"id":"1"},{"id":"2"},{"id":"3"},{"id":"4"}]}] | |||
| 69
    
        Сияющий в темноте 22.03.19✎ 13:14 | 
        Можно через запись текста собрать вручную,а для хранения с порядком использовать массивы-первый элемент имя поля,следующий-значение.     | |||
| 70
    
        antihacker 22.03.19✎ 14:28 | 
        сОБИРАТЬ json В РУЧНУЮ , как то колхозно.     | |||
| 71
    
        Ёпрст гуру 22.03.19✎ 15:10 | 
        От ты нудный
 
 | |||
| 72
    
        Сияющий в темноте 22.03.19✎ 17:46 | 
        70 иногдп очень полезно,особенно,если не совсем json.
 можно даты писать в одинарных кавычках. не забываем,что javascript кушает строки в одинарных кавычках на ура,но в стандарте этого нет. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |