Python中json.dumps生成的字符串为何与原字符串==比较结果不等
问题解答
两个值不相等和==比较符、变量类型无关,核心原因是json.dumps()的返回内容和你预期的不一致:
json.dumps()的作用是将Python对象转换为符合JSON格式规范的字符串。当传入Python原生字符串"hello"时,按照JSON标准,字符串类型的值必须用双引号包裹,所以最终赋值给hello变量的字符串内容是带首尾双引号的"hello",总长度为7,而非你以为的不带引号、长度为5的纯字符序列hello。
你可以运行下面的代码直接查看变量的真实内容:
import json hello = json.dumps("hello") # 用repr打印可以直观看到字符串的真实内容,不会自动转义外层引号 print(repr(hello)) # 输出结果为 '"hello"' print(len(hello)) # 输出结果为7,对比原生"hello"的长度是5
你用来做相等判断的右侧值是原生字符串"hello",首尾没有额外的双引号,两个字符串的实际内容不一样,自然会返回不相等的结果。
如果要获取JSON字符串对应的原生Python值,需要用json.loads()做反序列化处理:
import json hello = json.dumps("hello") parsed_hello = json.loads(hello) print(parsed_hello == "hello") # 此时比较结果为True
内容的提问来源于stack exchange,提问作者committedandroider
相关产品推荐
相关产品推荐

