我尝试使用此代码在pandas中加载JSON
文件
我在第一行有这个错误。我认为同样的事情在json结构中是错误的,因为我也尝试使用pd.read_json
并且它不起作用。这有什么不对?
Name_file='data582750.txt'
l=[]
with open(Name_file) as f:
for line in f:
l.append(line)
data = json.loads(l)
json_normalize(data)
我收到此错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-64-c050037c7cb9> in <module>()
----> 1 data = json.loads(l)
C:\Users\demighaa\AppData\Local\Continuum\Anaconda2\lib\json\__init__.pyc in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
337 parse_int is None and parse_float is None and
338 parse_constant is None and object_pairs_hook is None and not kw):
--> 339 return _default_decoder.decode(s)
340 if cls is None:
341 cls = JSONDecoder
C:\Users\demighaa\AppData\Local\Continuum\Anaconda2\lib\json\decoder.pyc in decode(self, s, _w)
362
363 """
--> 364 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
365 end = _w(s, end).end()
366 if end != len(s):
TypeError: expected string or buffer
文件中的第一行是:
'{"Operator":0,"Device":"F0FCC","Time":1494854190,"FormattedTime":"2017-05-15 15:16:30 +0200 CEST","Data":"042911e3c78f2193262c58b2","JSONDecodedData":"{"Service":{"S":{"Typ":0,"Version":2,"Vdd":0},"Cpt":2,"Start":0},"ExtTemperature":[22.25,21.5,21.5,21.5,21.5,22],"Moisture":[50,50,49,49,49,50],"IntTemperature":[0,0,0,0,0,0,0,0,0]}","Snr":"48.21","ComputedLocation":{"Lat":0,"Lng":0},"LinkQuality":"EXCELLENT"}\n'
答案 0 :(得分:2)
请发布代码,而不是图片......
无论如何: 从我看到的内容 你有一个jsonlines file - 每一行都是一个独特的json对象的表示。 json.loads()
需要一个字符串(表示单个json对象),而不是list
。因此,显而易见的解决方案是动态解码json线而不是传递整个列表,即:
data = []
with open("you/file.ext") as f:
for line in f:
data.append(json.loads(line))
json_normalize(data)
编辑:鉴于您的评论,可能没有jsonlines文件。如果它是一个真正的json文件,那么只需将整个文件内容传递给json.loads()
,或者甚至更简单地将文件本身传递给json.load()
。让世界受宠:在发布之前阅读那个疯狂的手册,它将节省每个人的时间: - /
答案 1 :(得分:0)
json.loads(l[0])
应根据您的图片判断... json.loads
函数只需string
或buffer
,但您提供的是list
答案 2 :(得分:0)
可能是JSON数据存在一些问题!使用JSON验证程序验证数据。您只需在jsonlint上复制粘贴日期,然后检查JSON是否格式正确。