如何从json文件中读取数据?

时间:2016-12-01 13:24:38

标签: python json

我有一个json文件,其数据如下:

{
    "id": 1008, 
    "description": "Cheese, caraway", 
    "tags": [ ], 
    "manufacturer": "", 
    "group": "Dairy and Egg Products", 
    "portions": [
        {
            "amount": 1, 
            "unit": "oz", 
            "grams": 28.35
        }
    ], 
    "nutrients": [
        {
            "value": 25.18, 
            "units": "g", 
            "description": "Protein", 
            "group": "Composition"
        }, 
        {
            "value": 29.2, 
            "units": "g", 
            "description": "Total lipid (fat)", 
            "group": "Composition"
        }, 
        {
            "value": 3.06, 
            "units": "g", 
            "description": "Carbohydrate, by difference", 
            "group": "Composition"
        }, 
        {
            "value": 3.28, 
            "units": "g", 
            "description": "Ash", 
            "group": "Other"
        }
    ]
}

我使用以下代码尝试从中读取,

import json
path = 'C:\\Users\\IBM_ADMIN\\Desktop\\ml-1m\\food_nutrients_database - 副本.json'
data = open(path).read()
records = json.loads(data)

但收到以下错误:

records = json.loads(data)
ValueError: Expecting value: line 1 column 1 (char 0)

这里有什么问题?我注意到从“数据”开始的结果以“'锘begin”开头,这是可能的原因吗?如果是的话,如何解决?

3 个答案:

答案 0 :(得分:2)

不要那样做。只需从整个文件传递数据。

data = open(path).read()
records = json.loads(data)

您可以使用load()来缩短它,它使用文件对象本身:

records = json.load(open(path))

答案 1 :(得分:1)

你做错了是,你正在从JSON文件读取每一行并将其传递给json.load(),你需要做的就是,打开文件一次,读取内容,然后将它传递给json.load方法,这将有效。

file_data = open(path).read()
json_data = json.loads(file_data)
  

发布的JSON格式也不正确,因此请确保您的JSON   格式是正确的。

答案 2 :(得分:0)

您正在从字符串中单独读取这些行。试试这个:

Tk()

json.loads是将字符串加载到json对象,所以一定不要将它与json.load混淆