python jsonmerge库介绍

jsonmerge是一个将两个json对象进行合并的python库,在合并的过程中,可以指定合并策略。

官方地址:https://pypi.org/project/jsonmerge/

github地址:https://github.com/avian2/jsonmerge

1、安装:

jsonmerge支持python2.7、python3.5

pip install jsonmerge

注:jsonmerge依赖jsonschema库(https://pypi.python.org/pypi/jsonschema), 该库实现了JSON Schema for python。

2、使用:

1)基本使用:

>>> base = {
...         "foo": 1,
...         "bar": [ "one" ],
...      }

>>> head = {
...         "bar": [ "two" ],
...         "baz": "Hello, world!"
...     }

>>> from pprint import pprint

>>> from jsonmerge import merge
>>> result = merge(base, head)

>>> pprint(result, width=40)
{'bar': ['two'],
 'baz': 'Hello, world!',
 'foo': 1}

jsonmerge会返回base、head中所有的(并集)字段,对于重复的字段,默认将head中的值覆盖base中的字段值。

在实际中,可以通过JSON Schema的方式来设置合并策略。(jsonmerge默认使用JSON Schema的Draft 4

2)指定合并侧滤:

>>> schema = {
...             "properties": {
...                 "bar": {
...                     "mergeStrategy": "append"
...                 }
...             }
...         }

>>> from jsonmerge import Merger
>>> merger = Merger(schema)
>>> result = merger.merge(base, head)

>>> pprint(result, width=40)
{'bar': ['one', 'two'],
 'baz': 'Hello, world!',
 'foo': 1}

更多使用方式见github上的测试用例:https://github.com/avian2/jsonmerge/blob/master/tests/test_jsonmerge.py

3、常见策略:

  • overwrite:适用于任何类型,用base中的值覆盖head中的值;
  • append:适用于数组类型,将head中数组类型的值append到对应base中;
  • discard:适用于任何类型,即使head包含不同的值,也应将值保留在base中的。默认情况下,如果base不包含任何值(即文档的该部分未定义),则合并后的值将保持未定义状态。可以使用keepIfUndef选项进行更改。如果此选项为true,则在这种情况下将保留head的值。如果您要合并一系列文档并希望保留该系列中首次出现的值,但又想放弃进一步的修改,这将很有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赶路人儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值