¿Cómo leer un archivo JSON que contiene múltiples elementos raíz?

Si tuviera un archivo cuyos contenidos parecían:

{"one": 1} {"two": 2} 

Simplemente podría analizar cada línea por separado como un objeto JSON separado (usando JsonCpp ). Pero ¿y si la estructura del archivo fuera menos conveniente de esta manera?

 { "one":1 } { "two":2 } 

Ningún ejemplo en su pregunta es un objeto JSON válido; un objeto JSON solo puede tener una raíz. Tienes que dividir el archivo en dos objetos, luego analizarlos.

Puede usar http://jsonlint.com para ver si una cadena dada es JSON válida o no.

Por lo tanto, recomiendo cambiar lo que está volcando múltiples objetos JSON en un solo archivo para hacerlo en archivos separados, o poner cada objeto como un valor en un objeto raíz JSON.

Si no tienes control sobre lo que está creando estos, entonces estás atascado analizando el archivo para elegir los diferentes objetos raíz.

Aquí hay una forma válida de codificar esos datos en un objeto JSON:

 { "one": 1, "two": 2 } 

o si realmente necesitas objetos separados, como este:

 { "one": { "number": 1 }, "two": { "number": 2 } } 

Rob Kennedy tiene razón. Llamarlo por segunda vez extraería el siguiente objeto, y así sucesivamente. La mayor parte del archivo json lib no puede ayudarlo a hacer todo en una sola raíz. A menos que esté utilizando más marco de gama alta en QT.

Nadie ha mencionado matrices:

 [ {"one": 1}, {"two": 2} ] 

Es válido JSON y podría hacer lo que quiere el OP.