首页 > 解决方案 > 将键值对转换为 Json

问题描述

我正在尝试使用从数据库中收到的某些数据,格式如下:

('ACTION_CODE', 'S')
('ARRIVAL_DATE', '03-JUL-19')
('BIT_FLAGS', '1082131456')
('CONFIG_DATA_SOURCE', 'SPT')

我使用下面的代码来获得上述结果:

print("Object length :", len(rv.value.items()))   #rv is database row and I am iterating across database columns for one row 
for k, v in (rv.value.items()):  # Iterate over the key value pairs
    kv = k, v
    print((kv))

我想以 JSON 格式获取数据 kv 以使用 json.dumps(kv) ...其中 kv 是 json.dumps function 可接受的格式。如何编写代码来获取 kv ?请有任何帮助

还提到我将这些数据反馈给 GraphQL,所以我的模式定义有点受限......

最终目标是使用 json2obj(json.dumps(kv)) :

def _json_object_hook(d):
    return namedtuple("X", d.keys())(*d.values())


def json2obj(data):
    return json.loads(data, object_hook=_json_object_hook)

标签: pythongraphql

解决方案


如果没有更多数据,我会在黑暗中进行一些编码,但这就是我的建议:

result = {}

for k, v in rv.value.items():
    result[k] = v

json_data = json.dumps(result)
print(json_data)

编辑:因为现在我在你的评论中看到 rv.value 已经包含一个字典,所以转换很简单:

#rv.value.items = {'ACTION_CODE': 'S', 'ARRIVAL_DATE': '03-JUL-19', 'BIT_FLAGS': '1082131456', 'CONFIG_DATA_SOURCE': 'SPT'}
result = []
for key, value in rv.value.items():
    result.append({key : value})
print(result)
# Then the JSON conversion will be simple
json_data = json.dumps(result)
print(json_data)

推荐阅读