JSONCPP tiene un escritor, pero todo lo que parece hacer es obtener información del analizador y luego enviarla a una cadena o una secuencia. ¿Cómo hago para alterar o crear nuevos objetos, matrices, valores, cadenas, etc. y escribirlos en el archivo?JSONCPP Escribiendo en los archivos
Respuesta
AFAICT, crea objetos de tipo Json :: Value, que se ocupan de todos los tipos de datos JSON, y pasan el resultado a Json :: Writer (uno de sus tipos derivados, para ser específicos), o simplemente a una secuencia
ej .: para escribir una serie de tres números enteros en un archivo:
Json::Value vec(Json::arrayValue);
vec.append(Json::Value(1));
vec.append(Json::Value(2));
vec.append(Json::Value(3));
std::cout << vec;
En primer lugar, usted tiene que crear el JSON::Value
deseada. Debería ver todos los constructores (first). Para crear las jerarquías necesarias, consulte append
y las sobrecargas del operador []; hay sobrecargas para los arreglos indices y string keys para los objetos.
Una forma de volver a escribir el valor de JSON es usando StyledStreamWriter::write
y ofstream
.
Consulte la respuesta de cegprakash para saber cómo escribirlo.
Sí, pensé en esto después de leer la respuesta de Marcelo. Funciona. – Yelnats
@Yelnats, entonces, ¿por qué no lo marcan como una respuesta adecuada? –
'StyledStreamWriter' está en desuso. Si necesita personalización, use ['StreamWriterBuilder'] (http://open-source-parsers.github.io/jsoncpp-docs/doxygen/class_json_1_1_stream_writer_builder.html). O simplemente sigue las otras respuestas aquí. – cdunn2001
#include<json/writer.h>
Código:
Json::Value event;
Json::Value vec(Json::arrayValue);
vec.append(Json::Value(1));
vec.append(Json::Value(2));
vec.append(Json::Value(3));
event["competitors"]["home"]["name"] = "Liverpool";
event["competitors"]["away"]["code"] = 89223;
event["competitors"]["away"]["name"] = "Aston Villa";
event["competitors"]["away"]["code"]=vec;
std::cout << event << std::endl;
Salida:
{
"competitors" :
{
"away" :
{
"code" : [ 1, 2, 3 ],
"name" : "Aston Villa"
},
"home" :
{
"name" : "Liverpool"
}
}
}
Esto se ve muy bien. ¿Qué hay de agregar clases, en lugar de int, con el método .append? – malber
#include <json.h>
#include <iostream>
#include <fstream>
void main()
{
std::ofstream file_id;
op_file_id.open("file.txt");
Json::Value value_obj;
//populate 'value_obj' with the objects, arrays etc.
Json::StyledWriter styledWriter;
file_id << styledWriter.write(value_obj);
file_id.close();
}
Es más fácil de entender si explica su respuesta y no solo el código postal. – SuperBiasedMan
- 1. escribiendo en archivos binarios
- 2. Python3: escribiendo archivos csv
- 3. escribiendo 'bits' en secuencias de archivos C++
- 4. Iteración a través de objetos en JsonCpp
- 5. Python: Escribiendo a Excel 2007+ archivos (.xlsx)
- 6. escribiendo objetos js a los archivos (incluidos los métodos) en nodejs?
- 7. Escribiendo a varios descriptores de archivos
- 8. Escribiendo archivos de gran tamaño usando BufferedOutputStream
- 9. Escribiendo en archivos Excel en ruby usando roo gem
- 10. Compilación JSONCPP con Visual Studio 2010
- 11. Cómo reparar el error JsonCPP de getMemberNames()?
- 12. Escribiendo archivos en la cuenta de Dropbox desde GAE
- 13. escribiendo un detector de cambios de archivos en ruby
- 14. Compilación y uso de JSONCPP en Visual Studio10 con Boost
- 15. Manejo de errores más elegante en la biblioteca C++ - jsoncpp
- 16. Escribiendo archivos TIFF de 10,12 bit con LibTIFF C++
- 17. Escribiendo archivos XML usando XmlTextWriter con codificación ISO-8859-1
- 18. Escribiendo controladores en C#
- 19. escribiendo en IplImage imageData
- 20. Escribiendo un archivo por lotes para eliminar archivos con comodines
- 21. Escribiendo JTable en Excel
- 22. StreamWriter escribiendo en MemoryStream
- 23. construyendo jsoncpp (Linux) - ¿una instrucción para nosotros simples mortales?
- 24. Escribiendo a los registros de Windows en Python
- 25. escribiendo directamente en los almacenamientos intermedios internos std :: string
- 26. StreamWriter no está escribiendo los últimos caracteres en un archivo
- 27. Problemas para obtener un nodo de JSON con jsoncpp
- 28. escribiendo para sobresalir en java
- 29. escribiendo datos exif en php
- 30. Escribiendo html en una cadena
Pero quiero escribir en el fichero de .json. – Yelnats
Luego use un 'ofstream' en lugar de' cout'. –
Yelnats, luego canalícelo a un archivo en lugar de std :: cout. – TimZaman