AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Binärdaten platzsparend in JSON speichern

Ein Thema von Shark99 · begonnen am 24. Jul 2015 · letzter Beitrag vom 27. Jul 2015
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Binärdaten Platzsparent in JSON speichern

  Alt 25. Jul 2015, 20:22
Ja, darum kann man RTF (die zum Rendern benötigte Beschreibung mit Steuersequenzn und Text) auch in einem (Unicode-)String speichern.

Da so ein RTF aber auch sehr groß sein kann, macht es schon Sinn, den vor der Übertragung (z.B. per WebService nach Timbuktu) etwas kleiner zu machen.

Bearbeiten muss ich den auf jeden Fall, denn JSON ist UTF8 basiert und dann könnte die Größe u.U. explodieren (z.B. wenn jedes Zeichen im JSON als uXXXX dargestellt wird, dann hat man eine Vergrößerung der Daten um den Faktor 5)

Darum ist der Weg RTF-String -> TEncoding.Unicode.GetBytes() -> Komprimierung -> BASE64 -> JSON schon genau richtig.

Bei einem Projekt verwende ich genau dieses Verfahren (allerdings handelt es sich um (JPEG-)Bild-Daten, die dann BASE64-kodiert im JSON stehen).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#12

AW: Binärdaten Platzsparent in JSON speichern

  Alt 25. Jul 2015, 21:03
Da so ein RTF aber auch sehr groß sein kann, macht es schon Sinn, den vor der Übertragung (z.B. per WebService nach Timbuktu) etwas kleiner zu machen.
Jain. Nicht zwangsläufig. Ein JSON (Text) via Webservice wird in den meisten Fällen eh für den Trip vom Webserver gzipped. Es müsste schon seeehr undankbar zugehen, wenn der abrufende Client kein gzip oder deflate versteht. Von daher ist der Gewinn an Platz hier eher irrelevant.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#13

AW: Binärdaten Platzsparent in JSON speichern

  Alt 25. Jul 2015, 21:28
Bearbeiten muss ich den auf jeden Fall, denn JSON ist UTF8 basiert und dann könnte die Größe u.U. explodieren (z.B. wenn jedes Zeichen im JSON als uXXXX dargestellt wird, dann hat man eine Vergrößerung der Daten um den Faktor 5)
Warte mal ... JSON unterstützt so gut wie alle Unicode-Zeichen nicht-escaped in Strings. Im Schnitt sollte ein Text in UTF-8 nicht größer sein als mit UTF-16 (Widestring).
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: Binärdaten Platzsparent in JSON speichern

  Alt 25. Jul 2015, 23:06
Bearbeiten muss ich den auf jeden Fall, denn JSON ist UTF8 basiert und dann könnte die Größe u.U. explodieren (z.B. wenn jedes Zeichen im JSON als uXXXX dargestellt wird, dann hat man eine Vergrößerung der Daten um den Faktor 5)
Warte mal ... JSON unterstützt so gut wie alle Unicode-Zeichen nicht-escaped in Strings. Im Schnitt sollte ein Text in UTF-8 nicht größer sein als mit UTF-16 (Widestring).
Kommt darauf an welche Zeichen kodiert werden müssen, dann ist entweder UTF8 oder UTF16 besser. Bei einer (Komprimierung und) BASE64 Kodierung habe ich aber zuverlässig eine Zeichenmenge die in UTF8 immer mit einem Byte dargestellt werden kann.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#15

AW: Binärdaten platzsparend in JSON speichern

  Alt 26. Jul 2015, 18:22
Du solltest überlegen, ob Du die Nutzdaten nicht mit Multipart / FileStream überträgst und das JSON selber nur Infos dazu enthält (z.b. Größe, Checksumme, eine GUID etc.).
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#16

AW: Binärdaten platzsparend in JSON speichern

  Alt 26. Jul 2015, 20:21
Du solltest überlegen, ob Du die Nutzdaten nicht mit Multipart / FileStream überträgst und das JSON selber nur Infos dazu enthält (z.b. Größe, Checksumme, eine GUID etc.).
Also ich habe nicht gelesen, daß der die Daten versenden möchte. Er will sie nur speichern. (Oder habe ich etwas übersehen)?
Gerd
Kölner Delphi Usergroup: http://wiki.delphitreff.de
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#17

AW: Binärdaten platzsparend in JSON speichern

  Alt 26. Jul 2015, 22:29
Du solltest überlegen, ob Du die Nutzdaten nicht mit Multipart / FileStream überträgst und das JSON selber nur Infos dazu enthält (z.b. Größe, Checksumme, eine GUID etc.).
Also ich habe nicht gelesen, daß der die Daten versenden möchte. Er will sie nur speichern. (Oder habe ich etwas übersehen)?
Reine Deduktion:

Ein Datenformat, welches nicht verändert werden kann, muss mindestens eine Abhängigkeit von einem anderen System haben. Dieses andere System wird mit diesen Daten arbeiten und um dieses zu erreichen, müssen die Daten in die Reichweite desselbigen gelangen. Dieses geschieht auf irgendeinem Transportweg. Die Daten gehen von seinem System zu einem anderen und das bezeichnet man durchaus als Senden.

Ein WebService wurde zwar nirgends erwähnt ist aber durchaus wahrscheinlich
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#18

AW: Binärdaten platzsparend in JSON speichern

  Alt 27. Jul 2015, 08:05
Wenn es allerdings keine Abhängigkeiten gibt (REST) aber trotzdem JSON verwendet werden muss, bleibt nur noch die Möglichkeit dass der Ersteller dieser Vorgabe etwas minderbemittelt ist.
Niemand der Geschwindigkeit, Typsicherheit und effiziente Speicherung bzw. Übertragung benötigt setzt freiwillig JSON ein. Warum benutzt MongoDb denn BSON und warum hat Google zuerst Protocol Buffers und nun die noch simpleren Flatbuffers entwickelt? Vielleicht unter anderem weil diese Formate 10 mal kleiner und 100 mal schneller sind als XML oder JSON?

Hier ein Benchmark
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all

Geändert von Union (27. Jul 2015 um 08:10 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz