JSON C++ é um utilitário para C++ Moderno que serve para criar e ler arquivos JSON .
Instalação
Certifique-se de já possuir o Git , GCC ou Clang , CMake , GNU Make instalados no seu sistema.
Em seguida clone, construa e instale com os seguintes comandos:
git clone https://github.com/nlohmann/json
cd json
mkdir build && cd build
cmake ..
make
sudo make install
Ele será Copiado/Instalado nos diretórios similares aos abaixo:
-- Install configuration: ""
-- Up-to-date: /usr/local/include
-- Installing: /usr/local/include/nlohmann
-- Installing: /usr/local/include/nlohmann/json.hpp
-- Installing: /usr/local/lib64/cmake/nlohmann_json/nlohmann_jsonConfig.cmake
-- Installing: /usr/local/lib64/cmake/nlohmann_json/nlohmann_jsonConfigVersion.cmake
-- Installing: /usr/local/lib64/cmake/nlohmann_json/nlohmann_jsonTargets.cmake
-- Installing: /usr/local/lib64/pkgconfig/nlohmann_json.pc
Exemplo básico de utilização
Para criar um JSON básico.
vim hello-json.cpp
#include <iostream>
#include <nlohmann/json.hpp>
int main (){
nlohmann :: json j ;
j . push_back ( "Hello" );
j . emplace_back ( "World" );
std :: cout << j << '\n' ;
}
g++ hello-json.cpp
e rode: ./a
Possível saída:
[ "Hello" ,"World" ]
Imprimindo somente o primeiro elemento do JSON:
#include <iostream>
#include <nlohmann/json.hpp>
int main (){
nlohmann :: json j ;
j . push_back ( "Hello" );
j . emplace_back ( "World" );
std :: cout << j [ 0 ] << '\n' ;
}
Possível saída: "Hello"
Fazendo parsing
Exemplo de um arquivo JSON example.json
:
{
"number" : 42 ,
"website" : "Terminal Root" ,
"author" : "Marcos Oliveira" ,
"parsing" : true ,
"details" : {
"tutorial" : "json C++" ,
"id" : 1
},
"other" : null
}
Imprimir todo o conteúdo:
#include <iostream>
#include <nlohmann/json.hpp>
#include <fstream>
int main (){
std :: ifstream file ( "./example.json" );
nlohmann :: json j ;
file >> j ;
std :: cout << j << '\n' ;
}
Possível saída, note que a exibição foi alterada para ordem alfabética :
{ "author" :"Marcos Oliveira" ,"details" :{ "id" :1,"tutorial" :"json C++" } ,"number" :42,"other" :null,"parsing" :true,"website" :"Terminal Root" }
Imprimir o conteúdo com formatação:
#include <iostream>
#include <nlohmann/json.hpp>
#include <fstream>
int main (){
std :: ifstream file ( "./example.json" );
nlohmann :: json j ;
file >> j ;
std :: cout << std :: setw ( 2 ) << j << '\n' ;
}
Possível saída,note que a exibição foi alterada para ordem alfabética :
{
"author" : "Marcos Oliveira" ,
"details" : {
"id" : 1 ,
"tutorial" : "json C++"
},
"number" : 42 ,
"other" : null ,
"parsing" : true ,
"website" : "Terminal Root"
}
Imprimir somente o conteúdo de website
#include <iostream>
#include <nlohmann/json.hpp>
#include <fstream>
int main (){
std :: ifstream file ( "./example.json" );
nlohmann :: json j ;
file >> j ;
std :: string website = j [ "website" ];
std :: cout << website << '\n' ;
}
Possível saída: Terminal Root
.
Imprimir o conteúdo de {"details": {"tutorial"}}
:
#include <iostream>
#include <nlohmann/json.hpp>
#include <fstream>
int main (){
std :: ifstream file ( "./example.json" );
nlohmann :: json j ;
file >> j ;
std :: string jstr = j [ "details" ][ "tutorial" ];
std :: cout << jstr << '\n' ;
}
Possível saída: json C++
.
Para uma documentação completa acesse o repositório e a página oficial .
cpp
cppdaily
json
Marcos Oliveira
Desenvolvedor de software