Json.loads 抛出 ValueError

5

Python 2.6.6,我所做的就是接收来自zmq的消息并使用json.loads(message)进行解析。 抱歉造成了混乱,这里的json原封不动地保留。

{"mouhter_id":"one_keert","header":{"header_version":"1","message_type":"one_keert","session_id":"428c0ebd497b9dfcc3170da0d1e0628e","timestamp":1376616699,"src_path":"*/dc/occ1/bell000/lcd_one_mtmt/26866","dst_path":"*/dc/lkjhgvd/lkjhgvd/fegtault/24068"},"payload":{"destHardwareId":"","command":{"id":"bmclmc1","params":{"keylen":"396","key":"AAAAIM0XlJxAEiX6t1KSyuQh+gCnP1Jmu3lkTZvxhiOUogyMAAABDC0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQjAxaTZkOG5xVTBnQVBIdHhFMDZqNEI0UDF4TXoKVTVYYy83RnZCVzBtTFI3WlQxRTRxUmw3VEx0OVcwSi85OU5XRzF3NU14Um1oK2dubEJxTTFkNytadU1BNU1NdgpFbmNHcmFpNU1UcHo3elE0cm9CQWZFOVA0czFvM0dRaThSRlVSbFJMdWl2Ym1jempkcVdCYVlEUjNCUU9IOU96ClRWOHFhUnpCN3l0T1NnS09yZzA9Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQoAAABAg7od/LedQJ8MEBvKQjcBWM2ObdIeSDd/2VygDn0XFwBgUpYiWgum7FE8O51E0Xv3/R6ibvgSPFblqHqLDBNzOgAAAAAAAAAAAAAAAAAAAAAAAAAA"}}}}

我有以下JSON数据,在Python中我正在尝试加载它以便提取数据。

{
   "e_id": "1231231",
   "header": {
              "h_version": "1",
              "m_type": "abc",
              "s_id": "ffsfsd",
              "timestamp": 1376614509,
              "s_path": "*/dc/s1/De620/cpmgmt/25804",
              "d_path": "*/dc/sfer/sfer/kelt/23642"
              },
"payload": {
"dereId": "",
"cond":       {
              "id": "srcstg1",
              "pams": {
                     "keen": "396",
                     "ke":                               "AAAAICZJsxIYABq3JXFRJ7ouZtoLDOLIJBnrw03uASQTiK+nAAABDC0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1JR2JNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWpBNEdHQUFRQkR2SEZLNVZZdUg3ZUFMRitLeWhLbWl0TEdEMzAKZmJOakNHYkVNRW1Geld4cFgzZXJ0RjhKSjdjMWZ6cFRhekJGRkpDNW5vR3FycWl2M3VGbGNuMitjUUlCUC9LaQo4V0h4ZVNBVkQ3R2lNTXJHMEVGYTBrOWNucnd5MEtWeU93MEVYcmwyQUNJcXg5enZBV3NLeERhUjRlRzRZVi9jCjB2cVlKcEh1OXNMbE9jWDJJVW89Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQoAAABA+T4YOvY1ynTIlAUn8xI+/0c+2EAPRFF1uHx8jBP7uuNkb/wnRZl0hJWx6NAOd0kHuh2RdIXXMhXChaEWRNxq6wAAAAAAAAAAAAAAAAAAAAAAAAAA"
                     }
               }
           }
}

它跑出以下错误:
raise ValueError(errmsg("Extra data", s, end, len(s)))
ValueError: Extra data: line 1 column 904 - line 1 column 905 (char 904 - 905)

我使用jsonlint检查了文件的有效性,似乎它通过了验证。但我仍然收到这个错误信息? 我已经从字符串中删除了所有换行和制表符。 这里还有什么我遗漏了吗?

1
不能重复错误。 - Antti Haapala -- Слава Україні
8
请不要再重新格式化 JSON,如果每个人都重新格式化它,就很难知道字符 905 在哪里了。请注意保持原文意思并将其表述得通俗易懂。 - Antti Haapala -- Слава Україні
2
你能把你的Python代码也发一下吗?我的没有出现你的错误。 - AliBZ
请为您的 Python 版本添加一个标签。 - Antti Haapala -- Слава Україні
7
啊,你应该对你的 JSON 字符串进行重新表示(repr)......可能有隐藏的控制字符。 - Antti Haapala -- Слава Україні
显示剩余3条评论
1个回答

1

我从一个C++客户端获取的JSON字符串末尾有一个空字符,所以我只需删除该空字符,现在一切正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接