Объединить файл json со строкой json для вызова curl api - PullRequest
0 голосов
/ 30 сентября 2019

У меня была огромная трата времени, когда я пытался найти решение простой и основной проблемы. Я хочу отправить запрос POST к API, который ведет себя как вызов функции. А именно, у меня есть файл JSON, содержащий мои данные (~ 0,4 ГБ), и я хочу добавить (объединить) к нему небольшой JSON, содержащий параметры функций, через командную строку .

В качестве примера вы можете подумать о следующем:

Дан набор данных, содержащий, например, пользователей :
data.json <- {"users": ["Mary", "Bob", ...]}

Теперь я хочу проверить, есть ли пользователь «Боб» в наборе «пользователи».

Мой API возвращает true или false, если "Bob" принадлежит в нем или нет.

Существует два сценария структуры ввода, ожидаемых от моего API:

Первый

API ожидает данные как {"u": "Bob", "users": ["Mary", "Bob", ...]} Я пробовал те два, которые не работали:

curl http://API/ -d '@data.json' -d '{"user":"Bob"}'

curl http://API/ -d `jq -s '.[0] + .[1]' data.json '{"user":"Bob"}'`

Я хочу получить результат этогооперация python отправляет curl:

def merge():
   a = json.load('data.json')
   b = {'user': 'Bob'}
   a.update(b)
   return json.dumps(a)

, но с использованием программ командной строки.

Second

API в этом случае ожидает данные как {"u": "Bob", "data":{"users": ["Mary", "Bob", ...]}}

Это похоже на распаковку json внутри вашего вызова, например:

curl http://API/ -d '{"data": @data.json <- unpack the json file, "user":"Bob"}'

(это не работает)

Я хочу, чтобы результат этой операции python отправлялся в curl

def merge():
   return json.dumps({'user': 'Bob', 'data': json.load('data.json')})

, но с использованием программ командной строки.

Обратите внимание, что я не хочу писать Python, скрипт не создает новые файлы, но имеет простой и общий результат, который любойможно использовать, не зная всего о data.json.

...