遇到的问题:
现有代码如下
def ListQuery(self): sql01="SELECT content FROM zt_user_customdata \ WHERE realname='alarm-server' AND account='alarm-server'" result01= self.CommonQueryFunc(sql01) result02 = str(result01[0][0]).strip() result03 =json.load(result02) return result03
但是运行后报错如下:
Traceback (most recent call last): File "C:\Users\Administrator\eclipse-workspace\ZZ-ServerControl\src\AlarmFiltering.py", line 56, in <module> A = AlarmFiltering() File "C:\Users\Administrator\eclipse-workspace\ZZ-ServerControl\src\AlarmFiltering.py", line 13, in __init__ self.ListQueryResult = self.ListQuery() File "C:\Users\Administrator\eclipse-workspace\ZZ-ServerControl\src\AlarmFiltering.py", line 22, in ListQuery result03 =json.load(result02) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 293, in load return loads(fp.read(), AttributeError: 'str' object has no attribute 'read'
这个错误的原因是 json.load() 函数需要一个 file-like object 作为参数,但 result02 是一个 str 对象,所以 json.load() 函数无法解析这个对象。要解决这个问题,可以通过将 result02 转换为 file-like object,可以使用 io.StringIO 类来创建一个临时的 file-like object,然后将 result02 的值写入临时对象中,最后传入 json.load() 函数即可。代码示例如下:
import io def ListQuery(self): sql01 = "SELECT content FROM zt_user_customdata WHERE realname='alarm-server' AND account='alarm-server'" result01 = self.CommonQueryFunc(sql01) result02 = str(result01[0][0]).strip() temp_file = io.StringIO(result02) result03 = json.load(temp_file) return result03
这段代码使用 io.StringIO() 创建临时文件对象,然后使用 write() 方法将 str 对象 result02 写入文件对象中。最后,使用 json.load() 函数读取临时文件对象并返回解析结果。
标签:load,result02,信息处理,读取,self,json,result03,JSON,str From: https://www.cnblogs.com/babashi9527/p/17420816.html