字典上的迭代(来自json)给出了不完整的输出

时间:2015-08-28 15:40:41

标签: python json python-2.7 dictionary python-requests

我正在努力从HPQC检索信息,我已成功转换为json对象,然后转换为Python对象(即字典),但我遇到了麻烦由此产生的词汇中的价值。

我已经对它进行了大量的研究,我开始得到我需要的信息......但不是全部。

我使用的json / dict的一般结构如下:

*'v' indicates contents of the {} above it
Entities:{@Total:81
          Entity:[{},{},{},...,{}]
                  v
                  {@Type:<type>
                   Fields:{}
                  }       v
                          {Field:[{},{},{},...,{}]
                          }       v
                                  {@Name:<name>
                                   Value:<value
                                  }
          }

如上所述,我可以使用以下代码打印出名称和值:

with requests.Session() as req:
    req.post(authenticate_url, verify=False, auth=(usnm, pswd))
    request = req.get(url, verify=False)
    # responseToJSON just converts the response object to a JSON and then to a python object
    request = responseToJSON(request)

    for entry in js_dict[u'Entities'][u'Entity']:
        for nest_entry in entry[u'Fields'][u'Field']:
            print nest_entry[u'@Name']
            # Not all Names have a Value
            if u'Value' in nest_entry:
                print " " * 4, nest_entry[u'Value']
            else:
                print " " * 4, "No Value!"

根据@Total值,应该有81&#34;实体&#34;字典,每个都有字段 - 字段名称/值。我之前使用的for循环只打印出每个Field dict的名称和值,总共给出了15个结果。在当前版本中,我设法将其增加到23。

我将json对象导出到我在for循环之前使用的同一请求进程中的文件,并且所有81&#34;实体&#34;对象肯定存在,因此不应该是不完整的数据检索问题。

是否有某种检查或我遗漏的东西?或者由于某种原因,大量物体是否会导致它提前停止?或完全不同的东西?

1 个答案:

答案 0 :(得分:0)

经过一些额外的搜索和思考,我认为它可能不是json / dictionary不完整的,而是Eclipse的控制台。果然,Eclipse中的控制台(我正在使用)有一个缓冲区限制,在禁用该选项后,我的完整预期输出正确显示。

我最终使用的解决方案来自这个答案:https://stackoverflow.com/a/2828293/4739755