C++ con json
Con este programa vamos a leer un archivo json y procesarlo, esto es util por ejemplo cuando no queremos compilar un programa espeficico para cada servidor con el archivo json podemos tener nuestra configuracion y de ahi tomar lo que ocupemos para nuestro programa.
Digamos que tenemos un programa que se instala en un servidor que constantemente esta revisando las camaras de vigilancia y ocupamos ese mismo programa en otro lugar, creamos un archivo json con el numero de camaras y sus direcciones IP y el programa leera de ese archivo los datos para conectarse a las camaras.
Primero debemos instalar una libreria para manerjar archivos json en C++
luis@ubuntu:~/$ sudo apt-get install libjsoncpp-dev
Creamos nuestro archivo json
luis@ubuntu:~/$ nano camaras.json
Contenido de nuestro archivo json
{
"camaras":
[
{
"nombre":"Camara 1",
"ip": "172.16.0.10"
},
{
"nombre":"Camara 2",
"ip": "172.16.0.20"
},
{
"nombre":"Camara 3",
"ip": "172.16.0.30"
}
]
}
Ahora creamos nuestro programa en C++
luis@ubuntu:~/$ nano json.cpp
Codigo:
#include <iostream>
#include <fstream>
#include <jsoncpp/json/json.h> // or jsoncpp/json.h , or json/json.h etc.
using namespace std;
int main() {
ifstream ifs("camaras.json");
Json::Reader reader;
Json::Value obj;
reader.parse(ifs, obj);
const Json::Value& characters = obj["camaras"]; // array of characters
for (int i = 0; i < characters.size(); i++){
cout << "\nNombre: " << characters[i]["nombre"].asString();
cout << "\nIP: " << characters[i]["ip"].asString();
cout << endl;
}
}
Compilamos utilizando la libreria que instalamos jsoncpp
luis@ubuntu:~/$ g++ json.cpp -o json -ljsoncpp
Ejecutamos el programa
luis@ubuntu:~/$ ./json