当前位置: 首页 > 面试题库 >

Python json.loads显示ValueError:额外数据

鲜于峰
2023-03-14
问题内容

我正在从JSON文件“ new.json”中获取一些数据,我想过滤一些数据并将其存储到新的JSON文件中。这是我的代码:

import json
with open('new.json') as infile:
    data = json.load(infile)
for item in data:
    iden = item.get["id"]
    a = item.get["a"]
    b = item.get["b"]
    c = item.get["c"]
    if c == 'XYZ' or  "XYZ" in data["text"]:
        filename = 'abc.json'
    try:
        outfile = open(filename,'ab')
    except:
        outfile = open(filename,'wb')
    obj_json={}
    obj_json["ID"] = iden
    obj_json["VAL_A"] = a
    obj_json["VAL_B"] = b

我收到一个错误,回溯是:

  File "rtfav.py", line 3, in <module>
    data = json.load(infile)
  File "/usr/lib64/python2.7/json/__init__.py", line 278, in load
    **kw)
  File "/usr/lib64/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib64/python2.7/json/decoder.py", line 369, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 88 column 2 - line 50607 column 2 (char 3077 - 1868399)

有人能帮我吗?

这是new.json中数据的示例,文件中还有约1500种这样的词典

{
    "contributors": null, 
    "truncated": false, 
    "text": "@HomeShop18 #DreamJob to professional rafter", 
    "in_reply_to_status_id": null, 
    "id": 421584490452893696, 
    "favorite_count": 0, 
    "source": "<a href=\"https://mobile.twitter.com\" rel=\"nofollow\">Mobile Web (M2)</a>", 
    "retweeted": false, 
    "coordinates": null, 
    "entities": {
        "symbols": [], 
        "user_mentions": [
            {
                "id": 183093247, 
                "indices": [
                    0, 
                    11
                ], 
                "id_str": "183093247", 
                "screen_name": "HomeShop18", 
                "name": "HomeShop18"
            }
        ], 
        "hashtags": [
            {
                "indices": [
                    12, 
                    21
                ], 
                "text": "DreamJob"
            }
        ], 
        "urls": []
    }, 
    "in_reply_to_screen_name": "HomeShop18", 
    "id_str": "421584490452893696", 
    "retweet_count": 0, 
    "in_reply_to_user_id": 183093247, 
    "favorited": false, 
    "user": {
        "follow_request_sent": null, 
        "profile_use_background_image": true, 
        "default_profile_image": false, 
        "id": 2254546045, 
        "verified": false, 
        "profile_image_url_https": "https://pbs.twimg.com/profile_images/413952088880594944/rcdr59OY_normal.jpeg", 
        "profile_sidebar_fill_color": "171106", 
        "profile_text_color": "8A7302", 
        "followers_count": 87, 
        "profile_sidebar_border_color": "BCB302", 
        "id_str": "2254546045", 
        "profile_background_color": "0F0A02", 
        "listed_count": 1, 
        "profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png", 
        "utc_offset": null, 
        "statuses_count": 9793, 
        "description": "Rafter. Rafting is what I do. Me aur mera Tablet.  Technocrat of Future", 
        "friends_count": 231, 
        "location": "", 
        "profile_link_color": "473623", 
        "profile_image_url": "http://pbs.twimg.com/profile_images/413952088880594944/rcdr59OY_normal.jpeg", 
        "following": null, 
        "geo_enabled": false, 
        "profile_banner_url": "https://pbs.twimg.com/profile_banners/2254546045/1388065343", 
        "profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png", 
        "name": "Jayy", 
        "lang": "en", 
        "profile_background_tile": false, 
        "favourites_count": 41, 
        "screen_name": "JzayyPsingh", 
        "notifications": null, 
        "url": null, 
        "created_at": "Fri Dec 20 05:46:00 +0000 2013", 
        "contributors_enabled": false, 
        "time_zone": null, 
        "protected": false, 
        "default_profile": false, 
        "is_translator": false
    }, 
    "geo": null, 
    "in_reply_to_user_id_str": "183093247", 
    "lang": "en", 
    "created_at": "Fri Jan 10 10:09:09 +0000 2014", 
    "filter_level": "medium", 
    "in_reply_to_status_id_str": null, 
    "place": null
}

问题答案:

如以下示例所示,json.loads(和json.load)不会解码多个json对象。

>>> json.loads('{}')
{}
>>> json.loads('{}{}') # == json.loads(json.dumps({}) + json.dumps({}))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\json\__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 368, in decode
    raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 3 - line 1 column 5 (char 2 - 4)

如果要转储多个词典,请将它们包装在列表中,然后转储列表(而不是多次转储词典)

>>> dict1 = {}
>>> dict2 = {}
>>> json.dumps([dict1, dict2])
'[{}, {}]'
>>> json.loads(json.dumps([dict1, dict2]))
[{}, {}]


 类似资料:
  • 问题内容: 我与几个工作被设置为s ,并有一组和。在HTML中,如果在每行之后都有一个换行符,则会在div的右侧和底部自动添加5px的边距。 例: 是否有我忽略的属性可以让我重置自动保证金? 更新资料 从我发现的结果来看,没有任何方法可以消除空白…除非您将所有内容都放在同一行,或者添加注释以注释掉换行符。例: 这不是最佳的解决方案,但是如果您有多行代码,则仍然更易于阅读。 问题答案: div被视为

  • 我有一个UITabBarController的UITableView。当视图首次显示时,桌面视图在顶部显示额外的填充。当我切换到另一个标签,然后回来。它似乎在正确的位置。 所以我的问题是如何去除这个烦人的填充物,让它远离。 我尝试过的内容(但可能不正确): 取消酒吧等下的选项... 使表标题和视图大小为0.01f,并尝试使用nil和0。 可能还有上千种情况,但我遇到的堆栈溢出最多 问题截图: 问题

  • 问题内容: 我正在处理一些设置为并具有和的。在HTML中,如果在每行之后都有一个换行符,则会在div的右侧和底部自动添加5px的边距。 例: 是否有我忽略的属性可以让我重置自动保证金? 更新资料 从我发现的结果来看,没有任何方法可以消除空白…除非您将所有内容都放在同一行,或者添加注释以注释掉换行符。例: 这不是最佳的解决方案,但是如果您有多行,它仍然更易于阅读。 问题答案: div被视为内联元素。

  • 我有一个带有一列的oracle数据库表(数据类型-NUMBER)。 该列中存储的数据为1.1, 但在Oracle SQL Developer中,它显示为-1.100000000000000000008881784197001252323389,而当我使用java(JDBC)连接DB时,它也显示相同。

  • 编辑:发现问题是由于材料旋转库。当我使用AppCompatSpinner时,它工作得很好。 上下文:我在摆弄这个材料旋转器库。我扩展了ArrayAdapter,这样我就可以向它添加一个额外的项目(我希望将来最终将其转换为“add New item”按钮)。 问题:适配器正确地膨胀了额外的TextView。它可以很好地检测文本的宽度。问题是文本本身没有出现。 尝试:我推测问题可能是由于文本颜色的原因

  • 通过数据类,我们可以方便地得到很多有趣的函数,一部分是来自属性,我们之前已经讲过(从编写getter和setter函数): equals(): 它可以比较两个对象的属性来确保他们是相同的。 hashCode(): 我们可以得到一个hash值,也是从属性中计算出来的。 copy(): 你可以拷贝一个对象,可以根据你的需要去修改里面的属性。我们会在稍后的例子中看到。 一系列可以映射对象到变量中的函数。