C ¡Problema al analizar la cadena Json!
# include ltiostream gt
#Include " json/json.h "
Usar espacio de nombres std
int main()
{
//Cadena
const char * str =
" {\" praenomen\": \"Gayo\",\"nomen\":\"Julio\",\"cognomen\":\"Cézar\","
" \"生\":- 100, \" dead\":-44}";
JSON::Reader Reader;
JSON::Value root;
//De carácter Leer datos en cadena
if (reader.parse(str, root))
{
cadena praenomen = root["praenomen"]. asString();
Nomen de cadena = raíz[ "nomen" ]. asString();
cadena cognomen = root[" cognomen "]. asString();
int nacido = raíz[ "nacido" ]. asInt();
int murió = root[ "murió" ].
asInt();
cout lt ltpraenome " " nomen " " cognomen
lt lt"año de nacimiento" lt ltborn
lt lt", murió En qué año " lt lt deadlt ltendl
}
Devuelve 0;
}
Generar archivo archivo
LIB = -L/usr/local/LIB/LIB JSON/-ljson _ Linux-gcc-4 4 7 _ libmt
Respuesta: a.o
g -o a -std=c. 0x a.o $(LIB)
a o a . -RF a o a
En segundo lugar, lea JSON del archivo
PersonalInfo.json (un archivo que almacena cadenas en formato json)
{
[Nombre]: "Tsybius",
[Edad]: 23,
"sex_is_male": Sí,
"Socio de cooperación":
{
"Nombre del socio": "Galata",
"partner_age": 21,
"partner_gender_is_male": false
},
"logro": ["ach1","ach2","ach3"]
}
# incluir ltiostream gt p>
# incluir ltfstream gt
#Incluir " json/json.h "
Usar espacio de nombres std
int main()
{
JSON::Reader Reader;
JSON::Value root;
//Leer desde archivo
ifstream es;
is.open( "PersonalInfo.json", IOs::binary);
if (reader.parse(is, root))
{
//Leer información del nodo raíz
string name = root[ "name" ] . asString();
int edad = raíz[ "edad" ]. asInt();
bool sexo _ es _ masculino = root[" sexo _ es _ masculino "]. as bool();
cout lt lt"Mi nombre es" lt ltnamelt ltendl
cout lt lt"Yo soy" lt ltagelt lt"años" lt ltendl
cout lt lt"I am" lt lt(Gender_is_male? "Man": "Woman") lt ltendl
//Leer información del nodo secundario
cadena asociada _ nombre = raíz ["socio"]["socio_nombre"].
asString();
int socio_edad = root["socio"]["socio_edad"]. asInt();
bool pareja_sexo_es_masculino = root["pareja"]["pareja_sexo_es_masculino"]. as bool();
cout lt lt "El nombre de mi pareja es " lt ltpartner_name lt ltendl
cout lt lt(partner_sex_is_male?" He": "ella") lt lt"es "
lt ltpartner _ age lt lt"años" lt ltendl
//Leer información de la matriz
cout lt lt "Este es mi logro:" lt ltendl
for(int I = 0; i lt root ["logro"].size(); i )
{
string ach = root[ "logro"][i]. asString();
cout lt ltach lt lt\ t';
}
cout lt ltendl
cout lt lt"Leer ¡Listo! lt ltendl
}
es cerrar();
Devuelve 0;
}
LIB =-L/usr/local/LIB/LIB JSON/-ljson _ Linux-gcc-4 4 . 7 _ libmt
Respuesta: a.o
g -o a -std=c 0x a.o $(LIB)
a o a . p>Limpiar:
RM-RF a o a
Tercero, guardar la información en formato JSON.
a.cpp
# incluir ltiostream gt
# incluir ltfstream gt
#Incluir " json/json.h " p>
Usar espacio de nombres std
int main()
{
//Nodo raíz
JSON::Valor raíz ;
//Atributos del nodo raíz
root[" name "]= Json::Value(" Tsybius ");
root[" age " ] = Json::Value(23);
root[" sex _ is _ male "]= Json::Value(true);
//Nodo hijo
Json::Value socio;
//Atributos del subnodo
socio[" socio _ nombre "]= Json::Value("Galata" );
pareja["pareja_edad"]= Json::Value(21);
pareja["pareja_sexo_es_hombre"]= Json::Valor (falso); p>
//El nodo secundario se cuelga en el nodo raíz.
root[" socio "]= Json::Value(partner);
//Forma de matriz
Raíz["logro"]. append(" ach 1 ");
raíz["logro"]. append(" ach 2 ");
raíz["logro"].
append(" ach 3 ");
//Salida directa
cout lt ltfast write: "lt; ltendl
JSON::fast write fw;
cout lt ltfw . write(root) lt; ltendl lt ltendl
//Salida sangrada
cout lt ltstyled escritor: " lt; ltendl
JSON:: SW de escritor con estilo;
cout lt ltsw.write(root) ltendl lt ltendl
//Salida a archivo
ofstream os
OS .open(" información personal ");
os lt ltSW .
cierre(); p>Devolver 0;
}
Generar archivo
LIB =-L/usr/local/LIB/LIB JSON/-ljson _ Linux-gcc - 4 4 . 7 _ libmt
Respuesta: a.o
g -o a -std=c 0x a.o $(LIB)
a . CPP
g -c a.cpp
Limpieza:
RM-RF a o a
{
" Logro": ["ach1", "ach2", "ach3"],
[Edad]: 23,
[Nombre]: "Tsybius",
"Socio": {
" socio_age": 21,
"Nombre del socio": "Galata",
" socio_sex_is_male": falso p>
},
"sex_is_male": verdadero
}