【问题标题】:How can I get Json data with Python?如何使用 Python 获取 Json 数据?
【发布时间】:2012-06-19 05:22:33
【问题描述】:

我想要做的是用 Python 将 Json 数据作为列表(或数组)取出,我尝试了几次但没有成功。我的json数据是这样的:

{
    "status":"OK",
    "List":{
        "stuff":[{
            "id":"326",
            "name":"a",
            "url":"autob-fulla.tgz",
        },{
            "id":"327",
            "name":"b",
            "url":"auto-fullb.tgz",
        },{
            "id":"328",
            "name":"c",
            "url":"auto-fullc.tgz",
        }]
    }
}

我想返回“id”的所有值。现在我的代码是这样的:

import json
def retrieve():
    print('retrieving results...')
    testQueueID = '1';
    base_url1 = 'http://localhost:8080/stuff'
    conn = Connection(base_url1, username='admin', password='admin')
    resp = conn.request_get("", args={}, headers={'content-type':'application/xml', 'accept':'application/xml'})
    decoded_json = json.loads(json.dumps(resp, sort_keys=True, indent=4, skipkeys=True))
    return decoded_json 

【问题讨论】:

  • 您的代码似乎在请求 XML,但您正在谈论解码 JSON。这是怎么回事?
  • 我的错,标题应该是:headers = {'content-type':'application/xml', 'accept':'application/json'}
  • 在这种情况下,你可能不应该在这里使用json.dumps - json.loads() 应该是你所需要的。
  • 是的,雅虎!它有效...谢谢你,我的朋友。你其实很好。谢谢你,琥珀。 :-)

标签: python json rest


【解决方案1】:

只需忽略json.dumps 电话。您已经有一个包含 JSON 的字符串,所以您只需要json.loads()

【讨论】:

  • 如果某个答案解决了您的问题,您应该单击它左侧的绿色复选标记将其标记为已接受。 :)
【解决方案2】:

1.) xml != json

2.) 先试试这个http://www.doughellmann.com/PyMOTW/json/。它会教你。

3.) 让您入门的简单代码。查看打印的数据。

import json
from pprint import pprint
json_data=open('json_datafile')

data = json.load(json_data)
pprint(data)
json_data.close()

【讨论】:

  • 谢谢你,Vrashabh。让我试试这个。
  • 我试过:json_data=open('parameter.json') data = json.load(json_data)----最后一行报错
  • ret = conn.request_post("/bynewbuild/", body=content, headers=headers) abc = ret[u'body'] json_data=open(abc) 在这种情况下,错误是: "IOError: [Errno 2] 没有这样的文件或目录:u'{"......."
  • 然后我这样做了: json_data=open('parameter.json') data = json.load(json_data) File "D:\workspaces\TestPythonProject\src\MyTest.py",第 50 行,在 callRESTschedulerAPI 数据 = json.load(json_data) 文件“C:\Python27\lib\json_init_.py”,第 278 行,在加载 **kw) 文件“C:\Python27\lib\ json_init_.py",第 326 行,加载返回 _default_decoder.decode(s) 文件“C:\Python27\lib\json\decoder.py”,第 366 行,解码 obj,end = self.raw_decode(s, idx=_w(s, 0).end()) 文件“C:\Python27\lib\json\decoder.py”,第 382 行,在 raw_decode obj 中,end =
  • 对不起,拉法达。我想我让你头疼。我仍然无法弄清楚如何在 cmets 中发布代码。希望你能理解我在这里发布的内容。不过,我想要更多的解决方案。提前致谢。
猜你喜欢
  • 2014-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 1970-01-01
  • 2020-09-29
  • 2019-02-12
相关资源
最近更新 更多