Ich versuche einen guten Weg zu finden, um JSON in C zu analysieren. Ich brauche wirklich keine große Bibliothek oder so, ich hätte lieber etwas Kleines und Leichtes mit einem Minimum an Funktionen, aber guter Dokumentation.
Hat jemand etwas, auf das er mich hinweisen kann?
{
,[
,]
,}
,,
,"
, und Backslash. Sie können die Übergabe von Unicode-Escape-Sequenzen Ihnen überlassen oder nicht. Sie können es Ihnen überlassen, zu prüfen, ob die Zahlen innerhalb des zulässigen Unicode-Bereichs liegen usw. Dann besteht der Hauptunterschied zwischen dem Parsen von beliebigem JSON in Bäume und dem bekannten JSON in C. Strukturen.Antworten:
Json ist anfangs keine große Sprache, daher sind die Bibliotheken wahrscheinlich klein (zumindest nicht die XML-Bibliotheken).
Es gibt eine ganze Tonne C-Bibliotheken, die auf Json.org verlinkt sind . Vielleicht funktioniert einer von ihnen gut für Sie.
quelle
cJSON hat eine anständige API und ist klein (2 Dateien, ~ 700 Zeilen). Viele der anderen JSON-Parser, die ich mir zuerst angesehen habe, waren riesig ... Ich möchte nur einige JSON-Parser analysieren.
Bearbeiten: Wir haben im Laufe der Jahre einige Verbesserungen an cJSON vorgenommen.
quelle
Jsmn ist ziemlich minimalistisch und hat nur zwei Funktionen, mit denen man arbeiten kann.
http://zserge.bitbucket.org/jsmn.html
quelle
/* Allows escaped symbol \uXXXX */
...case 'u':
.../* TODO */
NXJSON ist ein voll ausgestatteter, aber sehr kleiner JSON-Parser (~ 400 Codezeilen) mit einer benutzerfreundlichen API:
const nx_json* json=nx_json_parse_utf8(code); printf("hello=%s\n", nx_json_get(json, "hello")->text_value); const nx_json* arr=nx_json_get(json, "my-array"); int i; for (i=0; i<arr->length; i++) { const nx_json* item=nx_json_item(arr, i); printf("arr[%d]=(%d) %ld\n", i, (int)item->type, item->int_value); } nx_json_free(json);
quelle
Sie können sich Jansson ansehen
Auf der Website wird Folgendes angegeben: Jansson ist eine C-Bibliothek zum Codieren, Decodieren und Bearbeiten von JSON-Daten. Es verfügt über:
quelle
jsmn
wegen seiner Geschwindigkeit zu verwenden [1], aber es unterstützt keine Codierung. Darüber hinaus ist Jansson sehr einfach zu bedienen. --- [1] translate.google.it/…Ich habe JSON-C für ein Arbeitsprojekt verwendet und würde es empfehlen. Leicht und wird mit offener Lizenz veröffentlicht.
Die Dokumentation ist in der Distribution enthalten. Grundsätzlich haben Sie
*_add
Funktionen zum Erstellen von JSON-Objekten, äquivalente*_put
Funktionen zum Freigeben ihres Speichers und Dienstprogrammfunktionen, die Typen und Ausgabeobjekte in Zeichenfolgendarstellung konvertieren.Die Lizenzierung ermöglicht die Aufnahme in Ihr Projekt. Wir haben es auf diese Weise verwendet und JSON-C als statische Bibliothek kompiliert, die mit dem Hauptbuild verknüpft ist. Auf diese Weise müssen wir uns keine Gedanken über Abhängigkeiten machen (außer über die Installation von Xcode).
JSON-C wurde auch für uns unter OS X (x86 Intel) und Linux (x86 Intel) ohne Zwischenfälle erstellt. Wenn Ihr Projekt portabel sein muss, ist dies ein guter Anfang.
quelle
Müssen Sie beliebige JSON-Strukturen oder nur Daten analysieren, die für Ihre Anwendung spezifisch sind? In letzterem Fall können Sie es viel einfacher und effizienter gestalten, indem Sie keine Hash-Tabelle / Map-Struktur generieren müssen, die JSON-Schlüssel Werten zuordnet. Sie können die Daten stattdessen einfach direkt in Strukturfeldern oder was auch immer speichern.
quelle