JSON C++ é um utilitário para C++ Moderno que serve para criar e ler arquivos JSON.
Para instalar você pode procurar o nlohmann/json
através da ferramenta de pesquisa do seu gerenciador de pacotes.
Exemplo usando o APT no Ubuntu:
sudo apt install nlohmann-json3-dev
Outra forma também é clonar, compilar e instalar a a partir do repositório do GitHub, seguindo os passos:
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
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"
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 .