|
v7: Передача JSON в API, в BOXBERY. У кого каким образом получалось? | ☑ | ||
---|---|---|---|---|
0
Владимир1С
09.08.17
✎
12:50
|
Сообщение, собственно, в теме. Загвоздка , в данный момент, в передаче массива массивов, то есть в передаче спецификации(табличной части). Каким образом что там объявлять?
|
|||
1
Владимир1С
09.08.17
✎
12:53
|
Поддержка от боксберри тупо написала, что мне нужно учить JSON, и пока от неё внятного ответа добиться не удалось. Может быть, кто нибудь здесь уже решал подобную задачу?
|
|||
2
Sserj
09.08.17
✎
12:55
|
(1) Ну собственно правильно же написали - учить JSON.
:) Это же обычный текстовый файлик. Бери форматируй и посылай. |
|||
3
v77
09.08.17
✎
12:57
|
(2) да вы все сговорились
|
|||
4
Владимир1С
09.08.17
✎
12:59
|
Форматирую и посылаю. В ответ получаю одну общую фразу: " Ошибка входящих данных. Не удалось преобразовать JSON строку обратно в массив."
Никаких подробностей, в каком поле ошибка, ничего. и как его понять? |
|||
5
Numerus Mikhail
09.08.17
✎
12:59
|
||||
6
Владимир1С
09.08.17
✎
13:02
|
(5) Видимо нет, но понять где не так, сервер мне не даёт. Поэтому, собственно, я и здесь.
|
|||
7
Владимир1С
09.08.17
✎
13:02
|
(5) Пишу я на 7.7, если что. не на 8.х
|
|||
8
v77
09.08.17
✎
13:03
|
(7) ну так показывай свой JSON уже
|
|||
9
Владимир1С
09.08.17
✎
13:04
|
{
"token" : "10000.rbpqbafb", "updateByTrack" : "0", "order_id" : "Из-ЦО-0042601", "PalletNumber" : "0", "barcode" : "0", "price" : 4741, "payment_sum" : 4741, "delivery_sum" : 0, "vid" : 1, "Shop" : { "name" : "", "name1" : "" }, "customer" : { "fio" : "Мизерак Иван Иосифович", "Phone" : "9153919582", "Phone2" : "9153919582", "email" : "", "name" : "Мизерак Иван Иосифович", "adress" : "М.о.,ЛМС, Центральный, д.9,кв.19", "inn" : "", "kpp" : "", "r_s" : "", "bank" : "", "kor_s" : "", "bik" : "" }, "kurdost" : { "index" : "", "city" : "", "addressp" : "", "timesfrom1" : "", "timesto1" : "", "timesfrom2" : "", "timesto2" : "", "timep" : "", "comentk" : "" }, "items" : { "1" : { "id" : "8060", "name" : "варежки жен 8060 OCEAN", "UnitName" : "шт.", "nds" : "18", "price" : "290", "quantity" : "1" }, "2" : { "id" : "2035", "name" : "шапка муж 2035 MIDNIGHT", "UnitName" : "шт.", "nds" : "18", "price" : "790", "quantity" : "1" }, "3" : { "id" : "4000", "name" : "Кошелек Mano 20100 SETRU dark blue, Размер: 2.5 * 10 * 18.5 см, цвет: темно-синий", "UnitName" : "шт.", "nds" : "18", "price" : "3661", "quantity" : "1" } }, "weights" : { "weight" : 0.466, "barcode" : "", "weight2" : "0", "barcode2" : "", "weight3" : "0", "barcode3" : "", "weight4" : "0", "barcode4" : "", "weight5" : "0", "barcode5" : "" } } |
|||
10
Sserj
09.08.17
✎
13:06
|
(9) Ну сразу в глаза бросается - массивы не фигруными скобками а квадратными обрамляются.
|
|||
11
Владимир1С
09.08.17
✎
13:08
|
(10) : расшифровка, присланная поддержкой Боксберри:
Регина Галимова http://prntscr.com/g5tb9w Образец массива на PHP: $SDATA=array(); $SDATA['updateByTrack']='Трекинг-код ранее созданной посылки'; $SDATA['order_id']='ID заказа в ИМ'; $SDATA['PalletNumber']='Номер палеты'; $SDATA['barcode']='Штрих-код заказа'; $SDATA['price']='Объявленная стоимость'; $SDATA['payment_sum']='Сумма к оплате'; $SDATA['delivery_sum']='Стоимость доставки'; $SDATA['vid']='Тип доставки (1/2)'; $SDATA['weights']=array( 'weight'=>'Вес 1-ого места', 'barcode'=>'Баркод 1-го места', 'weight2'=>'Вес 2-ого места', 'barcode2'=>'Баркод 2-го места', 'weight3'=>'Вес 3-его места', 'barcode3'=>'Баркод 3-го места', 'weight4'=>'Вес 4-ого места', 'barcode4'=>'Баркод 4-го места', 'weight5'=>'Вес 5-ого места', 'barcode5'=>'Баркод 5-го места' ); В JSON будет иметь вид: { "updateByTrack":"Трекинг-код ранее созданной посылки", "order_id":"ID заказа в ИМ", "PalletNumber":"Номер палеты", "barcode":"Штрих-код заказа", "price":"Объявленная стоимость", "payment_sum":"Сумма к оплате", "delivery_sum':'Стоимость доставки", "vid":"Тип доставки (1/2)", "weights":{ "weight":"Вес 1-ого места", "barcode":"Баркод 1-го места", "weight2":"Вес 2-ого места", "barcode2":"Баркод 2-го места", "weight3":"Вес 3-его места", "barcode3":"Баркод 3-го места", "weight4":"Вес 4-ого места", "barcode4":"Баркод 4-го места", "weight5":"Вес 5-ого места", "barcode5":"Баркод 5-го места" } } |
|||
12
Владимир1С
09.08.17
✎
13:08
|
Скобки фигурные.
|
|||
13
spock
09.08.17
✎
13:09
|
(0) Учи JSON: http://jsoneditoronline.org/
|
|||
14
Владимир1С
09.08.17
✎
13:11
|
(10) - а как же тогда имена полей-элементов массива JSON ? Разве квадратные скобки предполагают наличие имён?
|
|||
15
spock
09.08.17
✎
13:18
|
Скорее всего должно быть так:
"weights":[ {"weight":"Вес 1-ого места", "barcode":"Баркод 1-го места"}, {"weight":"Вес 2-ого места", "barcode":"Баркод 2-го места"}, {"weight":"Вес 3-его места", "barcode":"Баркод 3-го места"}, {"weight":"Вес 4-ого места", "barcode":"Баркод 4-го места"}, {"weight":"Вес 5-ого места", "barcode":"Баркод 5-го места"} ] |
|||
16
Sserj
09.08.17
✎
13:18
|
(14) Да нет, но ты в 0 написал - передача массива массивов. Поэтому и ищу у тебя [].
А теперь уточняется что это не массивы а наборы объектов передаются. |
|||
17
Владимир1С
09.08.17
✎
13:21
|
(15) С чего бы? Поддержка прислала
"weights":{ "weight":"Вес 1-ого места", "barcode":"Баркод 1-го места", "weight2":"Вес 2-ого места", "barcode2":"Баркод 2-го места", "weight3":"Вес 3-его места", "barcode3":"Баркод 3-го места", "weight4":"Вес 4-ого места", "barcode4":"Баркод 4-го места", "weight5":"Вес 5-ого места", "barcode5":"Баркод 5-го места" } |
|||
18
Владимир1С
09.08.17
✎
13:34
|
А как понимать вот это: ?
Регина Галимова Добрый день array( array(), array(), array(), array(), array(), ) Эквивалент: array( "0" => array( 'id'=>'Артикул товара в БД', 'name'=>'Наименование товара', 'UnitName'=>'Единица измерения', 'nds'=>'Процент НДС', 'price'=>'Цена товара', 'quantity'=>'Количество' ), "1" => array( 'id'=>'Артикул товара в БД', 'name'=>'Наименование товара', 'UnitName'=>'Единица измерения', 'nds'=>'Процент НДС', 'price'=>'Цена товара', 'quantity'=>'Количество' ), "2" => array( 'id'=>'Артикул товара в БД', 'name'=>'Наименование товара', 'UnitName'=>'Единица измерения', 'nds'=>'Процент НДС', 'price'=>'Цена товара', 'quantity'=>'Количество' ), "3" => array( 'id'=>'Артикул товара в БД', 'name'=>'Наименование товара', 'UnitName'=>'Единица измерения', 'nds'=>'Процент НДС', 'price'=>'Цена товара', 'quantity'=>'Количество' ), "4" => array( 'id'=>'Артикул товара в БД', 'name'=>'Наименование товара', 'UnitName'=>'Единица измерения', 'nds'=>'Процент НДС', 'price'=>'Цена товара', 'quantity'=>'Количество' ), ) |
|||
19
Владимир1С
09.08.17
✎
13:35
|
По схеме "items":{"0":{ .....},"1":{......} } ?
|
|||
20
Владимир1С
09.08.17
✎
13:37
|
Может быть, здесь есть кто нибудь, кто работал с JSON c Boxberry?
|
|||
21
Numerus Mikhail
09.08.17
✎
13:58
|
(20) Вообще странно тогда, ваш JSON выглядит вполне рабочим.
Да и парсеры его нормально съедают. Возможно вы просто не посылаете те поля, которые нужны другой стороне? |
|||
22
Владимир1С
09.08.17
✎
14:07
|
(21) Так... Версию об отсутствии необходимых полей мы сейчас проверим.
|
|||
23
v77
09.08.17
✎
14:18
|
мож число в ковычки записать?
"weight" : 0.466, "barcode" : "", "weight2" : "0", "barcode2" : "", |
|||
24
v77
09.08.17
✎
14:20
|
а то чота половина в ковычках половина нет
|
|||
25
Владимир1С
09.08.17
✎
14:23
|
(24)В кавычках было всё. Ответ - с ошибкой.
|
|||
26
Бубр
09.08.17
✎
17:43
|
(18) ты бы для начала запрос свой к серваку потестил в строке браузера... а дальше уже бы и код написал
|
|||
27
Бубр
09.08.17
✎
17:44
|
(20) к Wialon подключался.
|
|||
28
Бубр
09.08.17
✎
17:46
|
(18) json это структуры пар ключ:значение
|
|||
29
PLUT
09.08.17
✎
17:48
|
(0) проверяй свой "жейсон" в отладчике браузера гугл хрома на валидность (кнопка F12), закладка Concole и копипаста твоего сформированного текста в 1С7.7
|
|||
30
d4rkmesa
09.08.17
✎
22:04
|
Может, вам стоит накидать в 8.3 "рыбу" обработки, формирующую валидный тестовый файл (заполнение через объект Записьjson много времени не займет) и сравнить с тем, что у вас получается в 7ке?
|
|||
31
dmitryds
09.08.17
✎
23:17
|
(0) попросите пример валидного файла...
мне кажется в items дело items:[ { "id" : "8060", "name" : "варежки жен 8060 OCEAN", "UnitName" : "шт.", "nds" : "18", "price" : "290", "quantity" : "1" }, { "id" : "2035", "name" : "шапка муж 2035 MIDNIGHT", "UnitName" : "шт.", "nds" : "18", "price" : "790", "quantity" : "1" }, { "id" : "4000", "name" : "Кошелек Mano 20100 SETRU dark blue, Размер: 2.5 * 10 * 18.5 см, цвет: темно-синий", "UnitName" : "шт.", "nds" : "18", "price" : "3661", "quantity" : "1" } ] |
|||
32
dmitryds
09.08.17
✎
23:23
|
+
weights - правильно, если именованный массив({"a":"1","b":"2"}), то только в {}, если обычный массив [0,1,2,3, {"2":3},{"f":"22"}] тогда в [] еще стоит проверить, что бы в начале файла не было символов до { |
|||
33
Владимир1С
10.08.17
✎
16:31
|
Разобрались.
Надо было вот так: ТокенАвторизации="10000.rbpqbafb"; Метод="ParselCreate"; ДанныеЗаказаУТФ8=глСлужебныеСкрипты.Run("encodeURIComponent",ДанныеЗаказаJSON); ТелоЗапроса="token="+ТокенАвторизации+"&method="+Метод+"&sdata="+ДанныеЗаказаУТФ8; ВинХТТП=глПолучитьОбъектВинХТТП(); ВинХТТП.Open("POST",АдресСкрипта,0); ВинХТТП.SetRequestHeader("Content-Language","ru"); ВинХТТП.SetRequestHeader("Content-Charset","utf-8"); ВинХТТП.SetRequestHeader("Content-Type","application/x-www-form-urlencoded"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |