公共方法收集1:json_compare
生活随笔
收集整理的這篇文章主要介紹了
公共方法收集1:json_compare
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
@[TOC]公共方法收集1:json_compare
實(shí)現(xiàn)目的
通過(guò)3個(gè)主要函數(shù)實(shí)現(xiàn)json數(shù)據(jù)格式的對(duì)比
思維導(dǎo)圖
代碼
# 比較兩個(gè)Josn Node的類(lèi)型 def compare_type(base, other):return type(base) is type(other)# 比較Json內(nèi)容 def compare_json(base, other):msg = ""result = Trueif not compare_type(base, other):result = Falsemsg = "類(lèi)型不一致"else:if isinstance(base, dict):# 普通實(shí)例類(lèi)Josn存在dict里compare_result = compare_json_dict(base, other)if not compare_result[0]:result = Falsemsg = msg + compare_result[1]elif isinstance(base, list):# 數(shù)組或者List的Jsoncompare_result = compare_json_list(base, other)if not compare_result[0]:result = Falsemsg = msg + compare_result[1]else:# int,str等if not (base == other):result = Falsemsg = msg + str(base) + " vs " + str(other) + ";"return result, msg# 從dict比較json def compare_json_dict(base, other):msg = ""result = Trueif len(base) != len(other):result = Falsemsg = "value 長(zhǎng)度不一致;"else:for key in base:basev = base[key]try:otherv = other[key]except KeyError as e:result = Falsemsg = msg + "沒(méi)有key: " + key + ";"else:compare_result = compare_json(basev, otherv)if not compare_result[0]:result = Falsemsg = msg + key + "/" + compare_result[1]return result, msg# 從list比較json def compare_json_list(base, other):msg = ""result = Trueif len(base) != len(other):result = Falsemsg = "value 長(zhǎng)度不一致;"else:for i in range(len(base)):compare_result = compare_json(base[i], other[i])if not compare_result[0]:result = Falsemsg = msg + str(i) + "/" + compare_result[1]return result, msg# 判斷 base中的key 是否在other中存在且value相等 ,只檢測(cè)包含于,不需要全量比對(duì) by zou def compare_json_dict_contain(base, other):msg = ""result = Truefor key in base:basev = base[key]try:otherv = other[key]except KeyError as e:result = Falsemsg = msg + "沒(méi)有key: " + key + ";"else:compare_result = compare_json(basev, otherv)if not compare_result[0]:result = Falsemsg = msg + key + "/" + compare_result[1]return result, msg測(cè)試代碼和結(jié)果
print("test1:",compare_json_dict_contain({"aa":"zz","bb":["qq",{"vv":"kk"},]},{"aa":"zz","bb":["qq",{"vv":"kk"},],"oo":"dd"})) print("test2:",compare_json_dict_contain({"aa":"zz1","bb":["qq",{"vv":"kk"},]},{"aa":"zz","bb":["qq",{"vv":"kk"},],"oo":"dd"})) print("test3:",compare_json({"aa":"zz","bb":["qq",{"vv":"kk"},]},{"aa":"zz","bb":["qq",{"vv":"kk"},]})) print("test4:",compare_json({"aa":"zz","bb":["qq",{"vv":"kk"},]},{"aa":"zz","bb":["qq",{"vv":"kk"},],"oo":"dd"}))鳴謝
二哥的源代碼,哈哈
總結(jié)
以上是生活随笔為你收集整理的公共方法收集1:json_compare的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。