<p>片段中的<code>results</code>是dict,而不是字符串,因此<code>json.loads</code>将引发异常。如果这是固定的,那么内部循环中的每个<code>subitem</code>都是一个元组,因此尝试将其添加到字符串中会引发另一个</em>异常。我想您已经简化了代码,但是这两个类型的错误应该已经表明您简化了代码太多(而且不正确)。为什么不使用一个(同样简化的)<em>工作</em>代码段,以及您想要<code>json.loads</code>的实际字符串,而不是一个不可能重现问题的字符串呢?这样做会使帮助你更容易。在</p>
<p>除了观察实际的字符串,并显示一些明显的信息,如<code>type(subscriber)</code>,很难提供更多的帮助,基于这些明显损坏的代码和在队形:-(. 在</p>
<p><strong>编辑</strong>:在“更新2”中,操作员说</p>
<pre><code>It displays this: Subscriber: {u'lastname': u'Walters', u'firstname': u'Neal'}
</code></pre>
<p>…还有什么能显示的呢,祈祷?!您将键打印为字符串,然后将值作为字符串key<em>是</em>一个字符串,该值是另一个dict,所以它当然是“stringized”(JSON中的所有字符串都是Unicode的,就像在C或Java中一样,而且您说您来自MSFT背景,所以这一点为什么会让您感到惊讶?!)。<code>str(somedict)</code>,与<code>repr(somedict)</code>相同,显示了键和值的<code>repr</code>(四周用大括号括起来,冒号和逗号作为适当的分隔符)。在</p>
<p><code>JSON</code>,一种完全独立于语言的序列化格式,虽然最初是以Javascript为中心的,但它完全不知道您希望看到的(of<em>course</em>的)哪些类(如果有的话),并且认为它可能是不合理的:如果将“类”的概念,很多语言,包括Javascript,都没有这个概念因此,它使用(用Python术语)字符串、数字、列表和dict(四种非常基本的数据类型,任何半正统的现代语言都可以拥有,至少在某些库中,如果没有嵌入到语言本身中的话)。当您<code>json.loads</code>一个字符串时,您将始终得到上述四种数据类型的某种嵌套组合(所有字符串都是unicode,所有数字都是floats,BTW;-)。在</p>
<p>如果您不知道(也不想通过某种任意约定或其他方式编码)正在序列化哪些类的实例,但绝对地,<em>必须在反序列化时返回类实例(而不仅仅是dicts等),那么JSON本身无法帮助您发现元信息不可能存在于JSON序列化字符串本身中。在</p>
<p>如果您对这四种基本类型没问题,只想看到一些打印结果,而您认为这些打印结果比所讨论的基本类型的默认Python字符串打印“更漂亮”,您必须根据您对“pretty”的主观定义编写自己的递归pretty打印函数(我怀疑您是否喜欢Python自己的<code>pprint</code>标准库模块,而不是喜欢当前的结果;-)。在</p>