Ich versuche, einen guten Weg zu finden, JSON in C zu analysieren. Ich brauche wirklich keine riesige Bibliothek oder so, ich hätte lieber etwas Kleines und Leichtes mit einem Minimum an Funktionen, aber guter Dokumentation.
Hat irgendjemand etwas, worauf er mich hinweisen kann?
Würde die Objective-C-Bibliothek funktionieren? Ich verwende TouchJson auf meinem Mac, wenn es in obj-c sehr einfach zu bedienen und klein ist.
– Nik
13. Juli 2011 um 4:12 Uhr
Wenn Sie “das absolute Minimum” sagen, wie minimal können Sie tatsächlich gehen? Einige verarbeiten verschiedene Unicode-Codierungen, andere nur UTF-8, und einige achten nur auf die ASCII-“Formatzeichen” wie z {, [, ], }, ,, ", und Backslash. Sie können es Ihnen überlassen oder nicht, Unicode-Escape-Sequenzen umzuwandeln, sie können es Ihnen überlassen, zu prüfen, ob Zahlen innerhalb des zulässigen Unicode-Bereichs liegen usw. Dann gibt es den Hauptunterschied zwischen dem Parsen von beliebigem JSON in Bäume und bekanntem JSON in C Strukturen.
– Hippiepfad
9. März 2013 um 11:13 Uhr
Verwandt: Analysieren Sie JSON in ANSI C [closed]
– Hippiepfad
18. März 2013 um 2:31 Uhr
Merlyn Morgan-Graham
Json ist zunächst keine große Sprache, daher sind die Bibliotheken dafür wahrscheinlich klein (zumindest nicht als XML-Bibliotheken).
Ja danke für die Antwort! Ich habe eine Reihe von ihnen durchgesehen und sie waren ziemlich schlecht dokumentiert / gepflegt. Ich dachte, ich würde es hier versuchen, bevor ich durch die Integration eines gelitten habe …. 🙂
– Absender
13. Juli 2011 um 4:11 Uhr
@dshipper: sourceforge.net/projects/cjson sieht angesichts Ihrer Anforderungen etwas vielversprechend aus. Ich habe persönlich keine dieser Bibliotheken verwendet, daher kann ich keine empfehlen. Vorschläge für eine einzelne Bibliothek sind sowieso nur eine Meinung und keine endgültige Antwort 🙂
– Merlyn Morgan-Graham
13. Juli 2011 um 4:13 Uhr
@dshipper: Ich habe gute Erfahrungen mit Jansson gemacht, das leicht und gut dokumentiert ist. digip.org/jansson/doc/2.1
– Dietrich Ep
13. Juli 2011 um 4:21 Uhr
@Dietrich, dshipper: Ich habe mir gerade Jansson angesehen. Ich stimme zu, dass es gut dokumentiert und ziemlich klein ist und wie es aussieht, als hätte es eine gute Testsuite. Es würde wahrscheinlich auch zu Ihren Anforderungen passen. Aber es gibt wahrscheinlich mehrere Bibliotheken da draußen, die funktionieren würden. Ich würde empfehlen, dass Sie Ihre Json-Abhängigkeiten so gut wie möglich abstrahieren, ein paar Bibliotheken ausprobieren und sehen, welche Ihnen am wenigsten Kummer bereitet 🙂
– Merlyn Morgan-Graham
13. Juli 2011 um 4:53 Uhr
Also, @dshipper, haben Sie sich für sourceforge.net/projects/cjson entschieden oder was?
– Mawg sagt, Monica wieder einzusetzen
22. April 2015 um 14:54 Uhr
NateS
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 etwas JSON parsen.
Langsam beim Abrufen von Array-Elementen nach Index.
– Enes Altinkaya
17. September um 18:40 Uhr
@EnesAltınkaya Ja, weil Elemente als verknüpfte Liste gespeichert werden. Bei großen Datenmengen ist JSON ohnehin die falsche Wahl.
– NateS
17. September um 22:09 Uhr
Jaroslaw Stavnichiy
NXJSON ist ein voll funktionsfähiger, aber sehr kleiner (~400 Codezeilen) JSON-Parser, der über eine einfach zu verwendende API verfügt:
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);
Da Sie der Entwickler von NXJSON zu sein scheinen, könnten Sie vielleicht kommentieren, wie es im Vergleich zu cJSON oder anderen Optionen abschneidet?
– Matt
13. Januar 2014 um 9:35 Uhr
Einfache Dinge auf einfache Weise erledigt – das ist der Hauptunterschied von NXJSON zu den meisten anderen Parsern. cJSON ist ebenfalls einfach, enthält aber neben dem JSON-Parser auch den JSON-Konstruktor sowie den Serializer. cJSON benötigt mehr Speicher, da es alle Zeichenfolgen dupliziert, während NXJSON alle Manipulationen an Ort und Stelle durchführt und den ursprünglichen Inhalt zerstört. Je nach Aufgabenstellung können diese Unterschiede als Vor- oder Nachteile betrachtet werden. NXJSON verarbeitet auch Kommentare, was gut zum Analysieren von Konfigurationsdateien ist.
– Jaroslaw Stavnichiy
14. Januar 2014 um 11:36 Uhr
Prabhpreet
Jsmn ist ziemlich minimalistisch und hat nur zwei Funktionen, mit denen man arbeiten kann.
Ich war versucht zu benutzen jsmn wegen seiner Geschwindigkeit[1], aber es unterstützt keine Codierung. Außerdem ist Jansson wirklich einfach zu bedienen. — [1] translate.google.it/…
Jansson ist meine Anlaufstelle für das Parsen von JSON in C
– Kenneth Wilke
22. September 2017 um 2:25 Uhr
Kurtis
ich benutzte JSON-C für ein Arbeitsprojekt und würde es empfehlen. Lightweight und wird mit offener Lizenzierung veröffentlicht.
Die Dokumentation ist in der Distribution enthalten. Sie haben im Grunde *_add Funktionen zum Erstellen von JSON-Objekten, äquivalent *_put Funktionen, um ihren Speicher freizugeben, und Hilfsfunktionen, die Typen konvertieren und Objekte in String-Darstellung ausgeben.
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 Haupt-Build verknüpft ist. Auf diese Weise müssen wir uns keine Gedanken über Abhängigkeiten machen (außer der Installation von Xcode).
JSON-C wurde für uns auch ohne Zwischenfälle unter OS X (x86 Intel) und Linux (x86 Intel) gebaut. Wenn Ihr Projekt portabel sein muss, ist dies ein guter Anfang.
Ich war versucht zu benutzen jsmn wegen seiner Geschwindigkeit[1], aber es unterstützt keine Codierung. Außerdem ist Jansson wirklich einfach zu bedienen. — [1] translate.google.it/…
Jansson ist meine Anlaufstelle für das Parsen von JSON in C
– Kenneth Wilke
22. September 2017 um 2:25 Uhr
R.. GitHub HÖREN SIE AUF, ICE ZU HELFEN
Müssen Sie beliebige JSON-Strukturen parsen oder nur Daten, die für Ihre Anwendung spezifisch sind. Wenn letzteres der Fall ist, können Sie es viel leichter und effizienter machen, indem Sie keine Hash-Tabellen-/Zuordnungsstruktur generieren müssen, die JSON-Schlüssel auf Werte abbildet; Sie können die Daten stattdessen einfach direkt in Struct-Feldern oder was auch immer speichern.
Dies ist ein sehr wichtiger Punkt bei der Verwendung von JSON mit nicht dynamischen Sprachen wie C. Aber es ist keine Antwort, also sollte es wirklich ein Kommentar zur Frage des OP sein.
– Hippiepfad
9. März 2013 um 11:22 Uhr
+1 für kreatives Denken! Wie würde das aber funktionieren? Könnte dies nicht immer noch eine besonders leichte Bibliothek verwenden? Das Parsen in Strukturfelder klingt immer noch nach ziemlich viel Arbeit.
– CL22
4. Oktober 2016 um 17:36 Uhr
14209100cookie-checkAnalysieren von JSON mit C [closed]yes
Benutzt du eine Linux-Distribution?
– Nik
13. Juli 2011 um 4:06 Uhr
json-glib
– Nick
13. Juli 2011 um 4:07 Uhr
Würde die Objective-C-Bibliothek funktionieren? Ich verwende TouchJson auf meinem Mac, wenn es in obj-c sehr einfach zu bedienen und klein ist.
– Nik
13. Juli 2011 um 4:12 Uhr
Wenn Sie “das absolute Minimum” sagen, wie minimal können Sie tatsächlich gehen? Einige verarbeiten verschiedene Unicode-Codierungen, andere nur UTF-8, und einige achten nur auf die ASCII-“Formatzeichen” wie z
{
,[
,]
,}
,,
,"
, und Backslash. Sie können es Ihnen überlassen oder nicht, Unicode-Escape-Sequenzen umzuwandeln, sie können es Ihnen überlassen, zu prüfen, ob Zahlen innerhalb des zulässigen Unicode-Bereichs liegen usw. Dann gibt es den Hauptunterschied zwischen dem Parsen von beliebigem JSON in Bäume und bekanntem JSON in C Strukturen.– Hippiepfad
9. März 2013 um 11:13 Uhr
Verwandt: Analysieren Sie JSON in ANSI C [closed]
– Hippiepfad
18. März 2013 um 2:31 Uhr