Die auf null basierende JSON-Bibliothek

Die auf null basierende JSON-Bibliothek

Anschrift des Projektes jsoncpp Dieses Projekt wurde leptjson inspiriert die grundlegendste Funktion zu erreichen, nur für Gebrauch zu lernen.

  • Stellt eine einfache parse () und Erzeugen () Methode JSON Text in Objekte analysiert, und vice versa
  • Nur unterstützt den Urtyp Wert von JSON und JSON Text abstrakten Syntaxbaum Konvertierung
  • Verwendung von Standard-C / C ++ Sprache (C ++ 11)
  • Wir verlassen uns nicht auf Bibliotheken von Drittanbietern

Start

Starten Sie dieses Projekt muss installiert sein gcc4.8 oder höher (auf Unterstützung c ++ 11)

rm *.o
rm start
g++ -w -c -std=c++11 jsonValue.cpp
g++ -w -c -std=c++11 jsonGenerator.cpp
g++ -w -c -std=c++11 jsonParser.cpp
g++ -w -c -std=c++11 test.cpp
g++ -w jsonValue.o jsonGenerator.o jsonParser.o test.o -o start
./start

Vorerfassung

Dann können wir anfangen, über eine einfachere Probleme beginnen mit, wie einige json Text zu lösen.

1, der Langtext „[1,2,3]“ gegeben, zu fragen, wie eine Reihe zu bekommen?

Wenn wir eine kontinuierliche Funktion lösen wollen heißt mit einem langen Text beschäftigen, erforderlich analytische Funktionen in zwei Schritten realisiert werden:

  • Schritt 1 Parse-Text und aktualisieren Sie den Textzeiger.
  • Schritt 2 erfolgreich gelöst, wenn das Analyseergebnis zurückgeführt wird.

Hier analytische Funktionen benötigen nur dreimal rufen, die letzte Begegnung ‚]‘ zu Ende

class Parser{
    char *txt;
    int parse_value() {
        /* 解析txt上下文 */
        /* 返回一个数值 */
    }
}

int main() {
    /* 建立parser */
    while (*parser.txt != ']') {
        array[i] = parser.parse_value();
    }
}
der Langtext gegeben 2 "[1, 2, [4,5]]", zu fragen, wie einen Baum zu bekommen?

Ebenso gibt es muß dreimal analytische Funktionen nennen, die letzte Begegnung ‚]‘ zu Ende

typedef struct {
    int number;
    vector<Node* > array;
} TreeNode

class Parser{
    char* txt;
    TreeNode* parse_value() {
        /* 解析txt上下文 */
        /* 返回一个节点 */
    }
}

int main() {
    /* 建立parser */
    /* 建立树根 */
    while (*parser.txt != ']') {
        root.array[i] = parser.parse_value();
    }
}

Nach dem Abschluss des analytischen Langtext, und betrachten dann die analytische Funktion selbst zu erreichen. ‚1‘, ‚2‘ kann direkt gelöst werden, während „[4,5]“ kann als Langtext zu sehen sind, auf rekursive Anrufe zu tätigen.

Das obige Verfahren I das objektorientierte Design angenommen haben, wird jede Operation eine Funktion des Objekts. Natürlich können wir auch prozessorientiertes Denken, übernehmen aber sicher sein, eingehende txt Textzeiger für jede Funktion oder die Verwendung von Referenz zu adressieren.

3, angesichts der langen Text JSON, zu fragen, wie einen Baum zu bekommen?

Das Projekt jsoncpp ist die Antwort auf diese Frage.

Ich denke du magst

Origin www.cnblogs.com/zzzz76/p/12629456.html
Empfohlen
Rangfolge