Domanda

Sto analizzando i dati JSON utilizzando JSONCPP. Non ho davvero bisogno di capire i dati, ho solo bisogno di stampare alcune proprietà e i loro valori. In qualche modo è difficile da fare. Prima ho bisogno di sapere quale tipo è il valore e poi ottenere il valore e poi convertirlo in Stringa di nuovo! C'è uno scrittore in stile ma non voglio usarlo in quanto aggiunge un po 'di CRLF alla fine.

Faccio qualcosa del genere

CJsonHelper::getUInt(Json::Value &root, std::string key){
    return root.get(key, 0-1).isInt() ? root.get(key, 0-1).asUInt() : 0-1;
}

Potrei semplicemente scrivere una singola funzione per ottenere tutte le proprietà solo con quella funzione che non si preoccupa davvero dei tipi, ecc.?

È stato utile?

Soluzione

Puoi creare banalmente il tuo scrittore che faccia quello che vuoi. Dai un'occhiata al codice per StyledWriter. I CRLF non ti piacciono StyledWriter::Write. Puoi creare la tua classe di scrittori che non ha quei CRLF.

Se non ti dispiace modificare la biblioteca, cambia lo scrittore in modo che funzioni come writeValue sono protetti piuttosto che privati. Allora puoi derivare la tua classe da StyledWriter con un diverso Write funzione e usa ancora i vari write* funzioni per eseguire i dettagli della conversione.

Altri suggerimenti

Il progetto si è spostato Github.

Per evitare tutti i feed di linea, usa un StreamwriterBuilder:

Json::Value whatever = ...;
Json::StreamWriterBuilder builder;
builder.settings_["indentation"] = "";
std::string out = Json::writeString(builder, whatever);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top