将前段js的json语法转为python json的语法

在做接口自动化测试的过程中,发现返回的数据如果层级太深,普通的验证无法实现,遂将js的json语法转为python的json语法便可实现多层级的key验证

 

def convert_to_dict(key_name):
'''
将前端js的json语法转为python的json语法
:param key_name:
:return:
'''
json_str = """{'message': 'SUCCESS','data': [{'user_name': [{'test_name': [{'full_name':'js', 'age': 20}]}, {'test_name': 'cjs', 'age': 30}]}], 'code': '0'}"""
# 这其实是 JSONDecoder 的一个构造参数,即不严格检查JSON语法
# js = eval(json_str.replace('"', "'"))
js = demjson.decode(json_str.replace("\n", ""))
if "." in key_name:
# 根据.分割
key_list = key_name.split(".")
# 将转换后的对象赋值json_value 这个值会一直变化
json_value = js
for key in key_list:
# 含有数字
if "[" in key:
# 对数字key分割
key_list_ch = key.split("[")
# 获取数字
json_value = json_value[key_list_ch[0]]
for ch_key in key_list_ch[1:]:
if "]" in ch_key:
json_value = json_value[int(ch_key.replace("]", "").strip())]
else:
# 是字母key
json_value = json_value[key]
print(json_value)
print(json_value)
posted @ 2017-11-10 11:55  kakaok  阅读(897)  评论(0)    收藏  举报