Python json文件,具有复制到df的键

Python json文件,具有复制到df的键,python,json,pandas,Python,Json,Pandas,我正在尝试将json文件转换为df。此json文件具有重复的密钥 根据这个问题的答案:,我试着做: from collections import OrderedDict from json import JSONDecoder def make_unique(key, dct): counter = 0 unique_key = key while unique_key in dct: counter += 1 unique_key

我正在尝试将json文件转换为df。此json文件具有重复的密钥

根据这个问题的答案:,我试着做:

from collections import OrderedDict
from json import JSONDecoder


def make_unique(key, dct):
    counter = 0
    unique_key = key

    while unique_key in dct:
        counter += 1
        unique_key = '{}_{}'.format(key, counter)
    return unique_key


def parse_object_pairs(pairs):
    dct = OrderedDict()
    for key, value in pairs:
        if key in dct:
            key = make_unique(key, dct)
        dct[key] = value

    return dct



decoder = JSONDecoder(object_pairs_hook=parse_object_pairs)

with open("file.json") as f:
obj = decoder.decode(f)
#print obj
我收到了以下错误:

TypeError 
Traceback (most recent call last)
<ipython-input-70-0d2633348c10> in <module>()
  2 
  3 with open("file.json") as f:
 ----> 4     obj = decoder.decode(f)
  5     #print obj
  6 

C:\ProgramData\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
回溯(最近一次呼叫最后一次)
在()
2.
3将open(“file.json”)作为f:
---->4 obj=解码器。解码(f)
5#打印对象
6.
解码中的C:\ProgramData\Anaconda2\lib\json\decoder.pyc(self,s,_w)
362
363         """
-->364 obj,end=self.raw\u decode(s,idx=\u w(s,0.end())
365 end=_w(s,end).end()
366如果结束!=长度:
TypeError:应为字符串或缓冲区“


我错过了什么

问题在于
JSONDecoder.decode
接受的是字符串而不是文件。因此,您需要传入文件的全文。这可以简单到

with open('file.json') as f:
    obj = decoder.decode(f.read())

如果
file.json
的大小合理。如果它太大,无法一次性加载所有文件,那么您需要研究如何增量解析JSON文件。

obj=decoder.decode(f.read())
?它可以工作。谢谢但是现在,我有以下错误:“ValueError:Expecting,delimiter:line 320 column 435(char 127674)”是否可以“忽略”此错误并将json文件转换为df?@Thabra这意味着您的json文件有问题。你应该去它告诉你的地方,看看那里有什么