Ihr bytesObjekt ist fast JSON, verwendet jedoch einfache Anführungszeichen anstelle von doppelten Anführungszeichen und muss eine Zeichenfolge sein. So eine Möglichkeit , es zu beheben , ist die dekodieren byteszu strund ersetzen Sie die Anführungszeichen. Eine andere Option ist zu verwenden ast.literal_eval; siehe unten für Details. Wenn Sie das Ergebnis drucken oder als gültigen JSON in einer Datei speichern möchten, können Sie den JSON in eine Python-Liste laden und dann ausgeben. Z.B,
import json
my_bytes_value = b'[{\'Date\': \'2016-05-21T21:35:40Z\', \'CreationDate\': \'2012-05-05\', \'LogoType\': \'png\', \'Ref\': 164611595, \'Classe\': [\'Email addresses\', \'Passwords\'],\'Link\':\'http://some_link.com\'}]'
my_json = my_bytes_value.decode('utf8').replace("'", '"')
print(my_json)
print('- ' * 20)
data = json.loads(my_json)
s = json.dumps(data, indent=4, sort_keys=True)
print(s)
Ausgabe
[{"Date": "2016-05-21T21:35:40Z", "CreationDate": "2012-05-05", "LogoType": "png", "Ref": 164611595, "Classe": ["Email addresses", "Passwords"],"Link":"http://some_link.com"}]
- - - - - - - - - - - - - - - - - - - -
[
{
"Classe": [
"Email addresses",
"Passwords"
],
"CreationDate": "2012-05-05",
"Date": "2016-05-21T21:35:40Z",
"Link": "http://some_link.com",
"LogoType": "png",
"Ref": 164611595
}
]
Wie Antti Haapala in den Kommentaren erwähnt, können wir ast.literal_evaleine Konvertierung my_bytes_valuein eine Python-Liste durchführen, sobald wir sie in eine Zeichenfolge dekodiert haben.
from ast import literal_eval
import json
my_bytes_value = b'[{\'Date\': \'2016-05-21T21:35:40Z\', \'CreationDate\': \'2012-05-05\', \'LogoType\': \'png\', \'Ref\': 164611595, \'Classe\': [\'Email addresses\', \'Passwords\'],\'Link\':\'http://some_link.com\'}]'
data = literal_eval(my_bytes_value.decode('utf8'))
print(data)
print('- ' * 20)
s = json.dumps(data, indent=4, sort_keys=True)
print(s)
Im Allgemeinen tritt dieses Problem auf, weil jemand Daten durch Drucken seines Pythons gespeichert hat, repranstatt das jsonModul zum Erstellen der richtigen JSON-Daten zu verwenden. Wenn es möglich ist, ist es besser, dieses Problem zu beheben, damit zunächst die richtigen JSON-Daten erstellt werden.