Python:比较两个json串是否相等,是直接把它当成字符串来比较呢?还是json.loads(),转化一下再比较

如题所述

其实如果你要包含 dict 的 compare json 是不可能的(json.dumps 加上 sort_keys=False 没用, 因为 whitespace 问题)。最好的方法是确保你的 json 来源是至多使用 list , 这样一来用 json.loads() 自然就达到你的 compare json(上面说了避免 whitespace 问题)。否则如果一定要用 dict 可是就要考虑 whitespace, 就要确保你的 json 来源是 in order 的(server 那里检查)。然后直接 字符串 str 比较。追问

请问一下json有几种格式啊?是两种吗?一种是{ },就是字典样子的,比如{'b':789,'c':456,'a':123},另一种是[ ],列表样子的,比如[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}]

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-08-09
json本身就是字符串,是符合json格式的字符串。 所以,你说的,字符串转json,就是不正确的描述。 一般正常的用法是: 涉及到,在json字符串,来自字符变量或文件内容,和不同类型的变量,之间的转换。 变量转json: json.dumps或json.dump json...本回答被网友采纳
第2个回答  2015-08-09
json.loads() 后比较。追问

json串有两种结构一种是{ },就是字典样子的,比如‘{'b':789,'c':456,'a':123}’,另一种是[ ],列表样子的,比如‘[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}]’,前者转化后是字典,后者转化后是列表,处理方式有点不一样,分别处理有点烦,直接当成字符串处理不是很简单嘛

第3个回答  2015-08-09
明显字符串比较不可取追问

json串有两种结构一种是{ },就是字典样子的,比‘{'b':789,'c':456,'a':123}’,另一种是[ ],列表样子的,比如‘[[1, 2, 3], 123, 123.123, "abc", {"key2": [4, 5, 6], "key1": [1, 2, 3]}]’,前者转化后是字典,后者转化后是列表,处理方式有点不一样,分别处理有点烦,直接当成字符串处理不是很简单嘛

追答

//tieba.baidu.com/i/sys/jump?un=%F9%96%E6i0505%90%BF" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%F9%96%E6i0505%90%BF" target="_blank" class="at">鶘鎖0505惪 :因为同一个json对象经过不同的序列化过程(譬如带整形或不带),出来的字符串里可能会有不同数量的whitespace。

追问

请问json字符串是不是有'{ }' '[ ]'这两种结构?转化成字典和列表后分别处理就行了吧?

追答

//tieba.baidu.com/i/sys/jump?un=nadesico19" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="nadesico19" target="_blank" class="at">nadesico19 :嘻嘻,这个楼主真的是人类吗?

//tieba.baidu.com/i/sys/jump?un=nadesico19" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="nadesico19" target="_blank" class="at">nadesico19 :嘻嘻,更怕json转换的时候,像列表,字典的顺序改变了.

追问

????

追答

//tieba.baidu.com/i/sys/jump?un=%F9%96%E6i0505%90%BF" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%F9%96%E6i0505%90%BF" target="_blank" class="at">鶘鎖0505惪 :你在哪里提问的呀?是渣度知道吗?给我地址.

//tieba.baidu.com/i/sys/jump?un=%F9%96%E6i0505%90%BF" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%F9%96%E6i0505%90%BF" target="_blank" class="at">鶘鎖0505惪 :机器人诈尸 了,@时尚花秋裤,看样子你调戏过度,攻城狮改成手动模式来了

//tieba.baidu.com/i/sys/jump?un=san11030" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="san11030" target="_blank" class="at">san11030 :卧槽,这绝壁的逆天了.会主动回复楼层.主动调戏了.

//tieba.baidu.com/i/sys/jump?un=san11030" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="san11030" target="_blank" class="at">san11030 :能不能找到他的原帖地址.参观一下案发现场.

//tieba.baidu.com/i/sys/jump?un=%CA%B1%C9%D0%BB%A8%C7%EF%BF%E3" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%CA%B1%C9%D0%BB%A8%C7%EF%BF%E3" target="_blank" class="at">时尚花秋裤 :居然是bot?

//tieba.baidu.com/i/sys/jump?un=nadesico19" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="nadesico19" target="_blank" class="at">nadesico19 :目测渣度解锁了黑科技。

听说在这里回复会同步到知道那里

//tieba.baidu.com/i/sys/jump?un=%B5%E7%C0%EB%B5%C4Tesla" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%B5%E7%C0%EB%B5%C4Tesla" target="_blank" class="at">电离的Tesla :嘻嘻,真的去了.骚年,你做到了!

//tieba.baidu.com/i/sys/jump?un=%B5%E7%C0%EB%B5%C4Tesla" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%B5%E7%C0%EB%B5%C4Tesla" target="_blank" class="at">电离的Tesla :我知道啦,知道里那一坨坨的代码其实是渣度贴吧的表情. Look >> << Look

//tieba.baidu.com/i/sys/jump?un=%CA%B1%C9%D0%BB%A8%C7%EF%BF%E3" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%CA%B1%C9%D0%BB%A8%C7%EF%BF%E3" target="_blank" class="at">时尚花秋裤 :咦?不对哟

//tieba.baidu.com/i/sys/jump?un=%CA%B1%C9%D0%BB%A8%C7%EF%BF%E3" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%CA%B1%C9%D0%BB%A8%C7%EF%BF%E3" target="_blank" class="at">时尚花秋裤 :

//tieba.baidu.com/i/sys/jump?un=%CA%B1%C9%D0%BB%A8%C7%EF%BF%E3" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%CA%B1%C9%D0%BB%A8%C7%EF%BF%E3" target="_blank" class="at">时尚花秋裤 :估计是回复

测试测试

//tieba.baidu.com/i/sys/jump?un=%B5%E7%C0%EB%B5%C4Tesla" onclick="Stats.sendRequest('fr=tb0_forum&st_mod=pb&st_value=atlink');" onmouseover="showattip(this)" onmouseout="hideattip(this)" username="%B5%E7%C0%EB%B5%C4Tesla" target="_blank" class="at">电离的Tesla :测试测试

渣度工程师真的抓楼都不会(-。-;)

//static.tieba.baidu.com/tb/editor/images/client/image_emoticon27.png" >

第4个回答  2015-08-09
这一定是机器人

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网