2016-10-03 3 views
0

У меня есть структура данных, которые я хочу, чтобы заполнить CMD аргРазбор арг к JSon элементов в питона

params = { 
    ... 
    ... 
    "blockX": "{\"nameX\":["\Arg1\","\Arg2\",\"Arg3\"........"\ArgX\"]}", 
    ... 
    ... 
} 

Затем я запускаю пост запрос с Params как данные:

r = requests.post("https://url", data=params) 

I только знать, как это сделать с одним элементом

"BlockX": "{\"nameX\": \"%s\"}" %ArgX, 

с уважением

+0

Является ли значение 'blockX' целенаправленным строковым представлением строки? То есть, вы хотите, чтобы JSON читал '" blockX ": {" name ": [Arg1, Arg2, Arg3]}' или '" blockX ": '{" name ": [" Arg1 "," Arg2 "," Arg3" ]} ' '? – MisterMiyagi

+0

Хороший вопрос ... это второй вариант ... с кавычками –

ответ

0

Ваш пример предложить вы хотите join аргументы. Вы можете конвертировать любой список в одну строку путем слияния с разделителем:

args = ['foo', 'bar', 'hold the mustard'] 
print('", "'.join(args)) 

Так, чтобы получить список '"Arg1", "Arg2"' и т.д., присоединиться к ним с «„“» разделителем и вставить что в шаблоне:

'{"nameX": ["%s"]}' % '", "'.join(args) 

Отметьте как ' позволяет пропустить экранирование каждого ". В вашем примере, это будет выглядеть так:

params = { 
    #... 
    "blockX": '{"nameX": ["%s"]}' % '", "'.join(args), 
    # ... 
} 

Пожалуйста, имейте в виду, что вы ставите строковое представление JSON в формате JSON! Это ... возможно, неправильно. Правильный API ожидал бы только одного JSON, и в этом случае вы можете напрямую сбрасывать args.

params = { 
    #... 
    "blockX": { 
    "nameX": args 
    }, 
    # ... 
} 
+0

спасибо .... плохо попробуйте оба и подтвердите результат –

+0

привет .... как избежать первого аргумента в соединении? –

+0

@oso_togari Какой первый аргумент? – MisterMiyagi

0

Если у Вас есть свои аргументы в args списке, то вы можете попробовать это:

import json 
params['blockX'] = json.dumps({'nameX': args}) 
+0

(обратите внимание, что есть другие элементы в params кроме blockX) .... Мне нужно преобразовать все остальные элементы в «param», чтобы сделать дамп, или я могу преобразовать только blockX, а затем «вставить» в params? –

+0

Сначала вам нужно преобразовать то, что вам нужно для преобразования в JSON ('blockX' в вашем примере). Затем вы добавляете JSON в 'params'. – skovorodkin

Смежные вопросы