Analysieren von JSON mit C [closed]

Lesezeit: 7 Minuten

Benutzeravatar von dshipper
Absender

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?

  • 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


Benutzeravatar von Merlyn Morgan-Graham
Merlyn Morgan-Graham

Json ist zunächst keine große Sprache, daher sind die Bibliotheken dafür wahrscheinlich klein (zumindest nicht als XML-Bibliotheken).

Es gibt eine ganze Tonne C-Bibliotheken, die auf Json.org verlinkt sind. Vielleicht funktioniert einer von ihnen gut für Sie.

  • 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

Benutzeravatar von NateS
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.

Edit: Wir haben gemacht einige Verbesserungen zu cJSON im Laufe der Jahre.

  • 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

Benutzeravatar von Yaroslav Stavnichiy
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

Prabhpreets Benutzeravatar
Prabhpreet

Jsmn ist ziemlich minimalistisch und hat nur zwei Funktionen, mit denen man arbeiten kann.

https://github.com/zserge/jsmn

Benutzeravatar von TantrajJa
TantrajJa

Kann man sich anschauen Janson

Auf der Website heißt es: Jansson ist eine C-Bibliothek zum Kodieren, Dekodieren und Manipulieren von JSON-Daten. Es verfügt über:

  • Einfache und intuitive API und Datenmodell
  • Kann sowohl in JSON kodieren als auch aus JSON dekodieren
  • Umfassende Dokumentation
  • Keine Abhängigkeiten zu anderen Bibliotheken
  • Volle Unicode-Unterstützung (UTF-8)
  • Umfangreiche Testsuite

  • Direkter Github-Link: github.com/akheron/jansson

    – Ray Hulha

    23. August 2016 um 13:28 Uhr

  • 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/…

    – Marco Sulla

    25. August 2016 um 9:59 Uhr


  • OjC ist schnell und unterstützt Codierung. github.com/ohler55/ojc

    – Peter Ohler

    16. Dezember 2016 um 21:54 Uhr

  • Jansson ist meine Anlaufstelle für das Parsen von JSON in C

    – Kenneth Wilke

    22. September 2017 um 2:25 Uhr

Benutzeravatar von Kurtis
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.

  • Direkter Github-Link: github.com/akheron/jansson

    – Ray Hulha

    23. August 2016 um 13:28 Uhr

  • 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/…

    – Marco Sulla

    25. August 2016 um 9:59 Uhr


  • OjC ist schnell und unterstützt Codierung. github.com/ohler55/ojc

    – Peter Ohler

    16. Dezember 2016 um 21:54 Uhr

  • Jansson ist meine Anlaufstelle für das Parsen von JSON in C

    – Kenneth Wilke

    22. September 2017 um 2:25 Uhr

R.. GitHub STOP HELPING ICEs Benutzeravatar
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


1420910cookie-checkAnalysieren von JSON mit C [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy