2010-12-09 1 views
0

Ich mache ein Spiel mit meinem Freund. Jetzt gibt es eine Frage über Ebenen. Die erste Version wurde mit XML erstellt. Es gibt ein paar Gründe, warum ich es nicht mag: zu viele Daten und es gab einige Probleme mit dem verwendeten Parser. Wir verwenden Boost, also entschied ich mich, json-parser zu betrachten.Dokumentformat

Die Struktur ist viel kleiner und optimiert. Was denkst du, ist das nicht zu radikal, um vom mächtigen xml zum einfachen json zu wechseln? Wäre es genug von JSON-Struktur, um große Spiel-Level mit vielen zusätzlichen Daten und Attributen zu organisieren?

Antwort

2

Ich benutze JSON viel in Webapps geschrieben in Python - es gibt wirklich gute Decoder für XML und JSON. Es gibt wirklich keinen großen Unterschied außer XML nimmt ein wenig mehr Platz, ist aber besser lesbar. JSON sieht schon fast wie ein Python-Wörterbuch aus, das macht Sinn. Wahrscheinlich ist der Hauptgrund, warum JSON im Web häufiger ist, dass JSON-RPC ziemlich gut ist, während XML-RPC schlecht gedacht ist und SOAP zu schwer ist.

Es hängt also davon ab, ob Sie einen guten JSON-Decoder finden können oder nicht, der schnell genug für Ihre Bedürfnisse ist. Ich weiß nicht, Boost oder arbeite in C/C++ sehr oft.

+0

Auch XML ist eine bessere Übereinstimmung für DOM-Stil-Codierung, sequenzielles Parsing und so weiter, während JSON eine engere Übereinstimmung für Wörterbücher, assoziative Arrays etc. ist. Es hängt ein wenig davon ab, wie Sie Ihr Spiel so weit ich vermute. – jambox

0

Ich denke JSON ist besser geeignet für datenorientierte Anwendungsfälle (wie Ihrer, nehme ich an) als XML. XML ist gut als Auszeichnungssprache; oder wenn man mehrere Vokabulare mischen muss. Ich finde XML für solche Anwendungsfälle nicht leistungsfähiger; und es gibt keine Gründe, warum Sie keine gewünschten Daten einer JSON-Struktur zuordnen können. Bei XML kommt viel Leistung von Verarbeitungswerkzeugen und XML-Vokabularen, nicht von der Kernauszeichnungssprache, die an sich relativ einfach ist.

Wahrscheinlichkeiten sind, dass sowohl XML als auch JSON tatsächlich für Sie arbeiten würden, also vielleicht nur sehen, welche bessere Bibliotheken für Ihren Entwicklungsstil hat.

0

Wenn Sie bereits ein Lesegerät verwenden, das es in ein DOM-Objekt einfügt, denke ich nicht, dass es sich lohnt, von XML zu JSON zu wechseln, wenn Sie nicht während des Prozesses Ihr Datenformat ändern. Vor allem, wenn Sie einen Editor verwenden, um die Daten Ihres Programms zu erstellen, weil Sie viel bessere Werkzeuge haben, um XML-Dokumente zu bearbeiten als JSON. Es ist sehr wahrscheinlich, dass die Analysezeit für diese DOM-Objekte zwischen den Implementierungen nicht sehr unterschiedlich sein wird, aber Ihre JSON-Instanz-DOM-Objekte werden wahrscheinlich weniger Platz einnehmen, wenn dies von Bedeutung ist. Sie können alles, was Sie benötigen, in XML oder JSON speichern, also sollten Sie sich keine Sorgen machen. Als eine Ebenenbeschreibungssprache würde ich XML verwenden, weil ich ein Schema definieren könnte und es einfacher ist, es bei Bedarf manuell zu bearbeiten. Es klingt auch so, als ob Sie die Fähigkeit haben möchten, diese Ebenen beim Lesen von Daten effizient zu erzeugen und alle zusätzlichen Instanzdaten zu ignorieren, wenn sie nicht so schnell wie möglich benötigt werden. Ein XML-SAX- oder Pull-Parser wäre dafür ideal.

Nun, da meine kurze Antwort vorbei ist, werde ich ein bisschen mehr mit Informationen wandern, die Ihnen helfen können, besser für sich selbst zu entscheiden.

Wie möchten Sie auf die Daten zugreifen? Möchten Sie einfach alles einlesen und ein großes Objekt haben, auf das Sie zugreifen können, oder müssen Sie nur einmal die Daten betrachten, um basierend auf diesen Informationen Objekte zu erstellen? Haben Sie Bedenken bezüglich der Leistung beim Parsen und wie schnell können Sie auf neue Informationen reagieren, die eingelesen werden? Wird sich das Format Ihrer Daten wahrscheinlich stark ändern? Möchten Sie einen Standard bereitstellen, in dem diese Informationen außerhalb Ihrer Anwendung freigegeben werden können? Welche Programmiersprache verwende ich? Einige Sprachen haben sehr gute Werkzeuge für JSON vs. XML, abhängig von der Sprache.

Angesichts der einzigen Wahl JSON oder XML würde ich entscheiden, basierend auf den Anwendungsfällen für die Anwendung relevant.

Ich würde XML verwenden, wenn ich Leistung in meinem Parser wirklich zwicken muss und ein sehr strukturiertes Format haben, das beschrieben und geteilt werden kann und wahrscheinlich nicht oft geändert wird. Ich könnte ein Schema verwenden, um die Anforderungen an die Datenstruktur zu beschreiben und anderen Leuten zu ermöglichen, meine Datendateien einfach zu unterstützen. Ich würde auch XML verwenden, wenn meine Informationen groß sind, und ich möchte die Daten in Chunks parsen und direkt in Objekte speichern, die mit einem kleineren Footprint enden als mit einem generischen DOM-Modell und Parser. Ich würde SAX-Push-Reader oder einen Stream-Reader verwenden, der es mir ermöglicht, zu lesen, wenn ich auf Informationen beim Einlesen reagieren musste. Es gibt viele gute Bibliotheken, um dies schnell und einfach für XML zu tun. Wenn ich die Daten oft manuell bearbeiten oder zu Debug-Zwecken ausdrucken musste, ist ein XML-Dokument dafür bereits in einem guten Format.

Ich würde JSON verwenden, wenn ich Instanz Dokumentplatz speichern und ich möchte ein DOM-Objekt. Wenn ich zwei Anwendungen habe, die nur versuchen, Daten wie Python und Java zu kommunizieren, würde ich JSON verwenden, weil es diese in Instanzobjekte mit Settern und Gettern ohne ein kompliziertes Framwork lesen kann, obwohl dies die Dinge verlangsamen könnte. Wenn ich nur Datenobjekte serialisieren und übertragen möchte, wäre JSON meine Wahl für XML, wenn dies meine einzigen Optionen sind.