ast.literal_eval
正在为以下JSON投掷ValueError: malformed string
。
我无法发现错误是什么。我使用了在线JSON验证器,都提到这是一个有效的JSON。
有人可以帮我看一下这个字符串的错误吗?
{
"business_id": "Iu-oeVzv8ZgP18NIB0UMqg",
"full_address": "3320 S Hill St,South East LA,Los Angeles, CA 90007",
"schools": [
"University of Southern California"
],
"open": true,
"categories": [
"Medical Centers",
"Health and Medical"
],
"photo_url": "http://s3-media1.ak.yelpcdn.com/bphoto/SdUWxREuWuPvvot6faxfXg/ms.jpg",
"city": "Los Angeles",
"review_count": 2,
"name": "Southern California Medical Group",
"neighborhoods": [
"South East LA"
],
"url": "http://www.yelp.com/biz/southern-california-medical-group-los-angeles",
"longitude": -118.274281,
"state": "CA",
"stars": 3.5,
"latitude": 34.01971,
"type": "business"
}
答案 0 :(得分:6)
true
是Python中无效的文字:
In [2]: ast.literal_eval('true')
ValueError: malformed node or string: <_ast.Name object at 0x7f32a096d550>
当您需要反序列化JSON文档时,请使用json
模块(特别是json.loads
)。
答案 1 :(得分:3)
您在这里使用了错误的工具 - ast.literal_eval
用于将 python literals 从字符串解析为python对象。它不是用于将序列化JSON中的数据加载到python中(尽管它可能也适用于一部分情况,因为序列化的json格式在某些时候恰好与python语法重叠)。
也许您在寻找json.loads
?