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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python:比较两个json串是不是相等,是直接把它当成字符串来比较呢?还是json.loads(),转化一下再比较相关的知识,希望对你有一定的参考价值。

json本身就是字符串,是符合json格式的字符串。 所以,你说的,字符串转json,就是不正确的描述。 一般正常的用法是: 涉及到,在json字符串,来自字符变量或文件内容,和不同类型的变量,之间的转换。 变量转json: json.dumps或json.dump json... 参考技术A 其实如果你要包含 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]]

参考技术B 明显字符串比较不可取追问

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" >

参考技术C json.loads() 后比较。追问

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

参考技术D 222222222222222222 第5个回答  2015-08-09 这一定是机器人

判断两个数组是不是相等

参考技术A

如何比较两个数组内容是否相等
一、不能通过 \'==\' 或者 \'===\' 来判断两个数组是否相等

因为JavaScript里面,数组是对象,上面等式是判断两个数组是否是同一个引用对象;在JavaScript里面是没有内置判断两个数组相等的方法。

二、不推荐通过转换成字符串

当数组中有数字1,另一个数组中是字符串\'1\',如此两个数组就不相等了,此方法无效,反而会造成不必要的误导。

三、正确方法如下

四、两个对象是否相等

转自: https://www.cnblogs.com/-867259206/p/6795354.html

以上是关于Python:比较两个json串是不是相等,是直接把它当成字符串来比较呢?还是json.loads(),转化一下再比较的主要内容,如果未能解决你的问题,请参考以下文章

c# 比较两个对象的值是不是相等

Python:比较两个字符串是不是相等或包含

Java字符串比较

Python比较字典形式的列表是不是部分相等

java怎么比较两个对象是不是相等?

为啥JAVA不可以用“==”来比较两个字符串是不是相等?