|
При записи JSON возвращает строку с символами "\r\n\" и др. | ☑ | ||
---|---|---|---|---|
0
OnePrg
23.06.22
✎
12:36
|
При попытке записать в одно из полей JSON JSON-строку в результирующей строке добавляет какие-то символы
СтруктураPOSТ_Запрос = Новый Структура; СтруктураPOSТ_Запрос.Вставить("request",СтрокаJSON_Запрос); <-- нормальная строка JSON запроса (см. ниже) ЗаписатьJSON(ЗаписьJSON_POSТ_Запрос,СтруктураPOSТ_Запрос); POSТ_Запрос = ЗаписьJSON_POSТ_Запрос.Закрыть(); <-- в результирующей строке добавляются символы "\r\n\" и др. { "client": "49", "object": "order", "method": "create", "parameters": { "orders": [ { "product_order": "55555", "contact": "Иванов", "tel": "0502224455", "city": "Глухов", "adress": "ул.Садовая", "time": "12:00:00", "delivery_date": "30.06.2022", "naimenovanie": "электрика", "summa_oplaty": "1000.00", "summa_strahovki": "10.00", "ves": "2.0", "mest": "1", "primechanie": "без примечания", "id_service": "2", "id_status": "0", "TypesOfPayers": "Sender", "BackwardDelivery": "Recipient" } ] } } { "request": "{\r\n\"client\": \"49\",\r\n\"object\": \"order\",\r\n\"method\": \"create\",\r\n\"parameters\": {\r\n\"orders\": [\r\n{\r\n\"product_order\": \"55555\",\r\n\"contact\": \"Иванов\",\r\n\"tel\": \"0502224455\",\r\n\"city\": \"Глухов\",\r\n\"adress\": \"ул.Садовая\",\r\n\"time\": \"12:00:00\",\r\n\"delivery_date\": \"30.06.2022\",\r\n\"naimenovanie\": \"электрика\",\r\n\"summa_oplaty\": \"1000.00\",\r\n\"summa_strahovki\": \"10.00\",\r\n\"ves\": \"2.0\",\r\n\"mest\": \"1\",\r\n\"primechanie\": \"без примечания\",\r\n\"id_service\": \"2\",\r\n\"id_status\": \"0\",\r\n\"TypesOfPayers\": \"Sender\",\r\n\"BackwardDelivery\": \"Recipient\"\r\n}\r\n]\r\n}\r\n}" } |
|||
1
Кир Пластелинин
23.06.22
✎
12:45
|
заэкранировались символы вестимо
|
|||
2
OnePrg
23.06.22
✎
12:57
|
ЗаписатьJSON(ЗаписьJSON_Запрос,СтруктураЗапроса);
СтрокаJSON_Запрос = СтрЗаменить(ЗаписьJSON_Запрос.Закрыть(),Символы.ПС,""); СтрокаJSON_Запрос = СтрЗаменить(СтрокаJSON_Запрос,Символы.ВК,""); СтрокаJSON_Запрос = СтрЗаменить(СтрокаJSON_Запрос,Символы.ВТаб,""); СтрокаJSON_Запрос = СтрЗаменить(СтрокаJSON_Запрос,Символы.НПП,""); СтрокаJSON_Запрос = СтрЗаменить(СтрокаJSON_Запрос,Символы.ПФ,""); СтрокаJSON_Запрос = СтрЗаменить(СтрокаJSON_Запрос,Символы.Таб,""); ЗаписьJSON_POSТ_Запрос = Новый ЗаписьJSON; ЗаписьJSON_POSТ_Запрос.ПроверятьСтруктуру = Ложь; ЗаписьJSON_POSТ_Запрос.УстановитьСтроку(); СтруктураPOSТ_Запрос = Новый Структура; СтруктураPOSТ_Запрос.Вставить("request",СтрокаJSON_Запрос); ЗаписатьJSON(ЗаписьJSON_POSТ_Запрос,СтруктураPOSТ_Запрос); POSТ_Запрос = ЗаписьJSON_POSТ_Запрос.Закрыть(); {"client": "49","object": "order","method": "create","parameters": {"orders": [{"product_order": "55555","contact": "Иванов","tel": "0502224455","city": "Глухов","adress": "ул.Садовая","time": "12:00:00","delivery_date": "30.06.2022","naimenovanie": "электрика","summa_oplaty": "1000.00","summa_strahovki": "10.00","ves": "2.0","mest": "1","primechanie": "без примечания","id_service": "2","id_status": "0","TypesOfPayers": "Sender","BackwardDelivery": "Recipient"}]}} { "request": "{\"client\": \"49\",\"object\": \"order\",\"method\": \"create\",\"parameters\": {\"orders\": [{\"product_order\": \"55555\",\"contact\": \"Иванов\",\"tel\": \"0502224455\",\"city\": \"Глухов\",\"adress\": \"ул.Садовая\",\"time\": \"12:00:00\",\"delivery_date\": \"30.06.2022\",\"naimenovanie\": \"электрика\",\"summa_oplaty\": \"1000.00\",\"summa_strahovki\": \"10.00\",\"ves\": \"2.0\",\"mest\": \"1\",\"primechanie\": \"без примечания\",\"id_service\": \"2\",\"id_status\": \"0\",\"TypesOfPayers\": \"Sender\",\"BackwardDelivery\": \"Recipient\"}]}}" } Как флеш убрать? |
|||
3
dmt
23.06.22
✎
13:28
|
ЗаписатьБезОбработки()
|
|||
4
arsik
гуру
23.06.22
✎
13:45
|
(0) Ты неправильно json формируешь. Ты в объектjson вставляешь строку и думаешь, что получится json?
Самое простое сделать структуру или массив и ее в json сериализовать. Примерно так: стр = Новый Структура("client,object,method,parameters",
|
|||
5
arsik
гуру
23.06.22
✎
13:47
|
Ошибочка
неправильно - стр.parameters.Добавить(Новый Структура("product_order,contact","55555","Иванов")); правильно - стр.parameters.orders.Добавить(Новый Структура("product_order,contact","55555","Иванов")); |
|||
6
arsik
гуру
23.06.22
✎
13:53
|
+(5) еще ошибка есть.
Вот так правильно: стр = Новый Структура("client,object,method,parameters","49","order","create", Новый Структура("orders", Новый Массив));
|
|||
7
arsik
гуру
23.06.22
✎
13:57
|
+(6) :)
стр = Новый Структура("request");
|
|||
8
dmt
23.06.22
✎
14:18
|
(7) Телепатирую, что у ТС уже есть строка жсон, так что придется ему либо использовать ЗаписатьБезОбработки, либо сначала десериализовать свою строку в структуру, затем вставить ее в структуру-владельца и только потом сериализовать в итоговый жсон
|
|||
9
OnePrg
23.06.22
✎
14:19
|
(3) не нахожу такого метода у JSON
|
|||
10
arsik
гуру
23.06.22
✎
14:25
|
(8) Нету у него. Он как раз собирает ее для ответа. Но добавляет объект request как строку.
|
|||
11
dmt
23.06.22
✎
14:26
|
(9)
ЗаписьJSON (JSONWriter) ЗаписатьБезОбработки (WriteRaw) Синтаксис: ЗаписатьБезОбработки(<Строка>) Параметры: <Строка> (обязательный) Тип: Строка. Строка, записываемая в документ JSON. Описание: Выполняет запись произвольной строки в документ, при этом проверка структуры документа не выполняется. Если при использовании метода свойство ПроверятьСтруктуру установлено в значение Истина, то проверка структуры продолжается на следующем элементе. Доступность: Тонкий клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Пример: ЗаписьJSON = Новый ЗаписьJSON; // Запись документа JSON ЗаписьJSON.ЗаписатьБезОбработки("Просто строка"); |
|||
12
OnePrg
23.06.22
✎
14:33
|
(7) Спасибище, друг - то, что нужно.
Всем спасибо. |
|||
13
OnePrg
23.06.22
✎
14:37
|
стоп, стоп, стоп ....
с символами разобрались НО! "в параметр rtequest должна быть передана строка, не объект JSON" как это выполнить? |
|||
14
arsik
гуру
23.06.22
✎
15:01
|
(13) Возможно ты что то не понимаешь в сервисе. Покажи, пример, что должно быть в итоге. Лучше не свое, а из мануала, того, по которому делаешь.
|
|||
15
arsik
гуру
23.06.22
✎
15:05
|
(13) Если ты все же хочешь передавать строку, то подумай, как на той стороне поймут как распарсить эту строку без символов экранирования?
|
|||
16
Кир Пластелинин
23.06.22
✎
15:15
|
(13) скорей всего в заголовках указать соответствующий content type
|
|||
17
OnePrg
23.06.22
✎
15:18
|
(14)
const requestData = { client: '123', object: 'order', method: 'create', parameters: { orders: [ product-order: '12345', contact: 'recipient пане', tel: '+380441234567', city: 'kiev', adress: 'some address', time: 'delivery time', delivery-date: '01.02.2018', naimenovanie: 'some description', summa_oplaty: 200, summa_strahovki: 200, ves: 2.5, mest: 1, primechanie : 'some note', id.service: 1, id-status: 1, nomenklatura: [ {id: 15, amount: З}, {id: 123, amount: 1} ] ] }; const params = new FormDataO; const requestDataJSON = JSON.stringify(requestData); params.append('request', requestDataJSON); //в параметре request должна быть строка (не объект) в виде JSON params.append('sign', 'concatenated requestDataJSON with key and encoded in MD5'); request.send(params); |
|||
18
arsik
гуру
23.06.22
✎
15:24
|
Ну попробуй вот так
стр = Новый Структура("client,object,method,parameters","49","order","create", Новый Структура("orders", Новый Массив));
|
|||
19
OnePrg
23.06.22
✎
15:26
|
Структура = Новый Структура("client,object,method,parameters","49","order","create", Новый Структура("orders", Новый Массив));
СтруктураЗаказа = Новый Структура; СтруктураЗаказа.Вставить("product_order","55555"); //(required) – номер заказа СтруктураЗаказа.Вставить("contact","Иванов"); //(required) – фио получателя ... Структура.parameters.orders.Добавить(СтруктураЗаказа); ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = Ложь; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, Структура); Строка_request = ЗаписьJSON.Закрыть(); //nomenklatura – массив подвязанной номенклатуры: // id – id номенклатуры // amount – количество в заказе по номенклатуре ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.ПроверятьСтруктуру = Ложь; ЗаписьJSON.УстановитьСтроку(); СтруктураГлавная = Новый Структура; СтруктураГлавная.Вставить("request",Строка_request); ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5); ХешированиеДанных.Добавить(Строка_request+api_ключ); СтруктураГлавная.Вставить("sign",СтрЗаменить(НРег(СокрЛП(ХешированиеДанных.ХешСумма))," ","")); ЗаписатьJSON(ЗаписьJSON, СтруктураГлавная); POSТ_Запрос_Строка = ЗаписьJSON.Закрыть(); { "request": "{\r\n\"client\": \"49\",\r\n\"object\": \"order\",\r\n\"method\": \"create\",\r\n\"parameters\": {\r\n\"orders\": [\r\n{\r\n\"product_order\": \"55555\",\r\n\"contact\": \"Иванов\",\r\n\"tel\": \"0502224455\",\r\n\"city\": \"Глухов\",\r\n\"adress\": \"ул.Садовая\",\r\n\"time\": \"12:00:00\",\r\n\"delivery_date\": \"30.06.2022\",\r\n\"naimenovanie\": \"электрика\",\r\n\"summa_oplaty\": \"1000.00\",\r\n\"summa_strahovki\": \"10.00\",\r\n\"ves\": \"2.0\",\r\n\"mest\": \"1\",\r\n\"primechanie\": \"без примечания\",\r\n\"id_service\": \"2\",\r\n\"id_status\": \"0\",\r\n\"TypesOfPayers\": \"Sender\",\r\n\"BackwardDelivery\": \"Recipient\"\r\n}\r\n]\r\n}\r\n}", "sign": "b139773............." } |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |