Обновите данные json с контекстом в Python с помощью jsonpath-ng - PullRequest
1 голос
/ 06 августа 2020

после Обновить json узлы в Python с использованием jsonpath , хотел бы знать, как можно обновить данные JSON в определенном контексте. Итак, скажем, мы выбираем точно такой же пример JSON:

{
    "SchemeId": 10,
    "nominations": [
        {
            "nominationId": 1
        }
    ]
}

Но на этот раз мы хотели бы удвоить значение исходного значения, поэтому необходима некоторая лямбда-функция, которая учитывает текущий узел значение.

1 Ответ

1 голос
/ 06 августа 2020

Нет необходимости в ламбадах; например, чтобы удвоить SchemeId, должно получиться что-то вроде этого:

data = json.loads("""the json string above""")
jsonpath_expr = parse('$.SchemeId')
jsonpath_expr.find(data)
val = jsonpath_expr.find(data)[0].value
jsonpath_expr.update(data, val*2)
print(json.dumps(data, indent=2))

Вывод:

{
  "SchemeId": 20,
  "nominations": [
    {
      "nominationId": 1
    }
  ]
}
...