Parser de JSON amb C i C++
Salta a la navegació
Salta a la cerca
Amb C: projecte jsmn
$ cp libjsmn.a example/ $ cp jsmn.h example/ cc -c simple.c -o simple.o cc -Wall -L. -ljsmn jsmn.o simple.o -o simple
o bé amb una sola línia:
$ cc -Wall -L. -ljsmn simple.c jsmn.o -o simple
i l'altre exemple:
$ cc -Wall -L. -ljsmn jsondump.c jsmn.o -o jsondump
Amb C++: projecte json-cpp
C++ JSON parser
cd ~/jsoncpp-src-0.5.0 sudo apt-get install scons $ scons platform=linux-gcc
Faig un petit exemple:
El fitxer json.h està a : ~/jsoncpp-src-0.5.0/include/json
i per compilar aquest exemple he de tenir en compte que
#include "jsoncpp/json.h"
per tant s'ha de copiar la carpeta en el directori on estic desenvolupant l'exemple.
$ g++ -o test_json test_json.cpp -ljson_linux-gcc-4.4.5_libmt /usr/bin/ld: cannot find -ljson_linux-gcc-4.4.5_libmt
Llegeixo a Internet:
...if your library name is say "libxyz.so" and it is located on path say: /home/user/myDir then to link it to your program g++ -L/home/user/myDir -lxyz myprog.cpp -o myprog
El fitxer .so està a:
~/jsoncpp-src-0.5.0/libs/linux-gcc-4.6$ ls libjson_linux-gcc-4.6_libmt.a libjson_linux-gcc-4.6_libmt.so
Per tant:
$ g++ -L/home/joan/jsoncpp-src-0.5.0/libs/linux-gcc-4.6 -o test_json test_json.cpp -ljson_linux-gcc-4.6_libmt
compila bé però no s'executa bé:
$ ./test_json ./test_json: error while loading shared libraries: libjson_linux-gcc-4.6_libmt.so: cannot open shared object file: No such file or directory
i és que en la variable echo $LD_LIBRARY_PATH no hi ha res. He d'afegir la ruta:
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/my_library/path.so.something $ export LD_LIBRARY_PATH $ ./my_app
Per tant:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/joan/jsoncpp-src-0.5.0/libs/linux-gcc-4.6
i ara ja funciona:
$ ./test_json Element 0 in array: item1
Element 1 in array: item2
Not an array: asdf
Json Example pretty print:
{
"array" : [ "item1", "item2" ],
"not an array" : "asdf"
}
creat per Joan Quintana Compte, desembre 2014