2016-08-02 2 views
0

Вот содержание моего файла JSONПрочитайте файл JSON, содержащий данные Юникода

cat ./myfile.json 

{u'Records': [{u'eventVersion': u'2.0', }]} 

Как читать этот файл в формате JSON?

Я попробовал чтение файла с помощью следующего кода,

def Read_json_file(jsonFile): 
    jsonDy = {} 
    if os.path.exists(jsonFile): 
     with open(jsonFile, 'rt') as fin: 
     jsonDy = json.load(fin) 
    else: 
     print("JSON file not available ->", 
           jsonFile) 
     sys.exit(1) 
    print("jsonDy -> ", jsonDy) 

Но получает следующее сообщение об ошибке,

Traceback (most recent call last): 
    File "a.py", line 125, in <module> 
    Main() 
    File "a.py", line 18, in Main 
    content = Read_json_file(eventFile) 
    File "a.py", line 44, in Read_json_file 
    jsonDy = json.load(fin) 
    File "/usr/lib64/python2.7/json/__init__.py", line 290, in load 
    **kw) 
    File "/usr/lib64/python2.7/json/__init__.py", line 338, in loads 
    return _default_decoder.decode(s) 
    File "/usr/lib64/python2.7/json/decoder.py", line 365, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
    File "/usr/lib64/python2.7/json/decoder.py", line 381, in raw_decode 
    obj, end = self.scan_once(s, idx) 
ValueError: Expecting property name: line 1 column 2 (char 1) 

Что я понимаю здесь u' представляет unicode обозначения, но не знает, как читать этот файл

PS: Я использую Python 2.7

+1

Попробуйте 'json.loads()' вместо этого. –

ответ

1

Попробуйте это,

import simplejson as json 
w = json.dumps({u'Records': [{u'eventVersion': u'2.0', }]}) 
print json.loads(w) 

или использование:

import json 
w = json.dumps({u'Records': [{u'eventVersion': u'2.0', }]}) 
print json.loads(w) 

Я сбрасывали в JSon воссоздать проблему. Вы можете просто использовать json.loads

+0

Вот мой текущий код; 'with open (jsonFile, 'rt') как fin:' 'jsonDy = json.loads (fin.read())' ... но получает следующую ошибку ... 'Traceback (последний последний вызов): содержание = Read_json_file (eventFile) jsonDy = json.loads (fin.read()) OBJ, конец = self.scan_once (с, IDX) ValueError: Ожидать имя свойства: строка 1 колонка 2 (символ 1) ' – Raj

+0

'json.loads (fin.read(). replace (" \ '",'" ')) 'Вы можете попробовать это и сказать мне? –

+0

Пробовал это ... Но, Получая ту же ошибку; Я изменил свой файл, чтобы иметь действительный контент JSON ... как @Lex указал ... что разрешил мой текущий дорожный блок с тестированием ... – Raj

3

Это недействительная структура JSON. Это строковое представление структуры данных Python. Соответствующая структура JSON будет:

{"Records": [{"eventVersion": "2.0"}]} 

Похоже, что-то пишет в JSON с выходом json.loads вместо json.dumps.

Смежные вопросы