Header image 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