无法解析JSON响应

时间:2018-01-10 05:23:41

标签: python json python-2.7 parsing

我正在使用Python2.7和简单的json模块,我能够得到一个响应,但是当我想用这个JSON响应做一些事情时,我无法做到。

Python代码:

        query_url = self.api_url + 'projects'
    try:
        req = urllib2.Request(query_url, None, {"Authorization": self._auth})
        handler = self._opener.open(req)
    except urllib2.HTTPError, e:
        print e.headers
        raise e
    print simplejson.load(handler)

JSON响应:

{'start': 0, 'nextPageStart': 166, 'values': [{'description': 'This Repo is created to maintain the code versioning accordingly for My project', 'links': {'self': [{'href': 'https://bitbucket.xyz.xyz/projects/My'}]}, 'id': 757, 'key': 'MY', 'type': 'NORMAL', 'public': False, 'name': 'hub'},{'description': 'Services ', 'links': {'self': [{'href': 'https://bitbucket.xyz.xyz/projects/Hello'}]}, 'id': 1457, 'key': 'HE', 'type': 'NORMAL', 'public': False, 'name': 'Hello'}], 'limit': 25, 'isLastPage': False, 'size': 25}

我删除的数据很少,只是保留了第一个和最后一个。

我正在观察的错误

Error: Parse error on line 1:
..."NORMAL", "public": False, "name": "Advi
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[', got 'undefined'

在这里,有些人可以帮助我,我在这里做错了吗。

1 个答案:

答案 0 :(得分:0)

因为你的json无效。这是您的Json数据的有效版本。

第一个错误字符串应该用双引号括起来。
其次javascprit中的布尔变量是小写的。使用false代替False

{
"start": 0,
"nextPageStart": 166,
"values": [{
        "description": "This Repo is created to maintain the code versioning accordingly for My project",
        "links": {
            "self": [{
                "href": "https://bitbucket.xyz.xyz/projects/My"
            }]
        },
        "id": 757,
        "key": "MY",
        "type": "NORMAL",
        "public": false,
        "name": "hub"
    },
    {
        "description": "Services ",
        "links": {
            "self": [{
                "href": "https://bitbucket.xyz.xyz/projects/Hello"
            }]
        },
        "id": 1457,
        "key": "HE",
        "type": "NORMAL",
        "public": false,
        "name": "Hello"
    }
],
"limit": 25,
"isLastPage": false,
"size": 25
}