【问题标题】:How to parse values from a JSON file in Python如何在 Python 中解析 JSON 文件中的值
【发布时间】:2025-12-22 07:30:06
【问题描述】:

我正在尝试从 json 文件中获取值,我得到的错误是 TypeError: expected string or buffer。我正在正确解析文件,而且我猜我的 json 文件格式也是正确的。我哪里错了?

这两个文件都在同一个目录中。

Main_file.py

import json

json_data = open('meters_parameters.json')

data = json.loads(json_data)  // TypeError: expected string or buffer
print data
json_data.close()

meters_parameters.json

{
    "cilantro" : [{
        "cem_093":[{
            "kwh":{"function":"3","address":"286","length":"2"},
            "serial_number":{"function":"3","address":"298","length":"2"},
            "slave_id":{"function":"3","address":"15","length":"2"}
        }]
    }],
    "elmeasure" : [{
        "lg1119_d":[{
            "kwh":{"function":"3","address":"286","length":"2"},
            "serial_number":{"function":"3","address":"298","length":"2"},
            "slave_id":{"function":"3","address":"15","length":"2"}
        }]
    }]
}

【问题讨论】:

  • 你的意思是json_data.close(),对吧?
  • 糟糕。错字。是的,它是json_data.close

标签: python json file


【解决方案1】:

loads 需要一个字符串而不是文件句柄。你需要json.load:

import json

with open('meters_parameters.json') as f:
    data = json.load(f)
print data

【讨论】:

  • Arg,忘了json.load! +1 :)
【解决方案2】:

当您想要加载文件中的所有内容时,您正在尝试加载文件对象。做:

data = json.loads(json_data.read())

.read() 从文件中获取所有内容并将其作为字符串返回。


with 语句在这里也更加 Pythonic:

with open('meters_parameters.json') as myfile:
    data = json.loads(myfile.read())

【讨论】: