Parser de JSON amb C i C++

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

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

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines