[Python-de] Binärdaten in JSON

Hardy Erlinger hardy.erlinger at posteo.de
Fr Nov 30 05:40:25 EST 2018


On 30.11.2018 11:27, Stefan Schwarzer wrote:
> Hallo Thomas,
>
> On 30/11/2018 09:48, Thomas Güttler wrote:
>> Am 29.11.18 um 18:19 schrieb Thomas Orgelmacher:
>>> Am 29.11.18 um 16:36 schrieb Thomas Güttler:
>>>> Hat jemand schon mal mit binären Daten in JSON gearbeitet?
>>>>
>>>> Welche Lösungsvariante habt ihr gewählt?
>>>>
>>>> V1: http://bsonspec.org/
>>>> V2: http://bjson.org/
>>>> V3: https://github.com/FasterXML/smile-format-specification
>>>> V4: ....
>>> base64?
>> Also wie ist das mit base64 gemeint? Wie ist das JSON ähnliches Datenformat,
>> welches auch binäre Daten übertragen kann?
>>
>> Ich suche eine Lösung. Ein Datenformat. Ich suche nicht ein gebasteltes Work-around.
> Zu "Ich suche eine Lösung": Wir wissen ja gar nicht,
> was dein konkretes Problem ist, außer "mit binären
> Daten in JSON arbeiten."
>
Exakt. Base64 ist kein Workaround. Damit kannst Du ganz ohne externe 
Libraries binäre Daten in JSON-Feldern serialisieren. Beispiel:

person = {
     'name': 'Luke Skywalker',
}
pic_content = pathlib.Path(pic_path).read_bytes()
person['picture'] = base64.encodebytes(pic_content).decode('ascii')

Das dict kann nun problemlos mit json.dumps() serialisiert werden. Das 
'picture'-Attribut ist reines ASCII. Es muss kein neues Binärformat 
eingeführt werden, beim Tracen der Messages zwischen Client und Server 
ist alles weiterhin JSON und damit sehr gut lesbar etc. etc.

Viele Grüße,
Hardy


Mehr Informationen über die Mailingliste python-de