Estoy tratando de encontrar una buena manera de analizar JSON en C. Realmente no necesito una biblioteca enorme ni nada, prefiero tener algo pequeño y liviano con un mínimo de características, pero buena documentación.
¿Alguien tiene algo que pueda señalarme?
{
,[
,]
,}
,,
,"
, y la barra invertida. Pueden dejar o no dejar que las secuencias de escape Unicode dependan de usted, pueden dejar que usted verifique si los números están dentro del rango Unicode permitido, etc. Luego, existe la principal diferencia entre analizar JSON arbitrario en árboles y JSON conocido en C estructuras.Respuestas:
Json no es un lenguaje enorme para empezar, por lo que es probable que las bibliotecas sean pequeñas (al menos, más que las bibliotecas Xml).
Hay un montón de bibliotecas de C enlazadas en Json.org . Quizás uno de ellos te funcione bien.
fuente
cJSON tiene una API decente y es pequeño (2 archivos, ~ 700 líneas). Muchos de los otros analizadores JSON que miré al principio eran enormes ... Solo quiero analizar algo de JSON.
Editar: Hemos realizado algunas mejoras en cJSON a lo largo de los años.
fuente
Jsmn es bastante minimalista y solo tiene dos funciones con las que trabajar.
http://zserge.bitbucket.org/jsmn.html
fuente
/* Allows escaped symbol \uXXXX */
...case 'u':
.../* TODO */
NXJSON es un analizador JSON con todas las funciones pero muy pequeño (~ 400 líneas de código), que tiene una API fácil de usar:
const nx_json* json=nx_json_parse_utf8(code); printf("hello=%s\n", nx_json_get(json, "hello")->text_value); const nx_json* arr=nx_json_get(json, "my-array"); int i; for (i=0; i<arr->length; i++) { const nx_json* item=nx_json_item(arr, i); printf("arr[%d]=(%d) %ld\n", i, (int)item->type, item->int_value); } nx_json_free(json);
fuente
Puedes echar un vistazo a Jansson
El sitio web establece lo siguiente: Jansson es una biblioteca C para codificar, decodificar y manipular datos JSON. Cuenta con:
fuente
jsmn
debido a su velocidad [1], pero no admite la codificación. Además, Jansson es realmente fácil de usar. --- [1] translate.google.it/…Solía JSON-C para un proyecto de trabajo y lo recomendaría. Ligero y se lanza con licencia abierta.
La documentación está incluida en la distribución. Básicamente, tiene
*_add
funciones para crear objetos JSON,*_put
funciones equivalentes para liberar su memoria y funciones de utilidad que convierten tipos y objetos de salida en representación de cadena.La licencia permite la inclusión con su proyecto. Lo usamos de esta manera, compilando JSON-C como una biblioteca estática que está vinculada con la compilación principal. De esa manera, no tenemos que preocuparnos por las dependencias (aparte de instalar Xcode).
JSON-C también se creó para nosotros bajo OS X (x86 Intel) y Linux (x86 Intel) sin incidentes. Si su proyecto necesita ser portátil, este es un buen comienzo.
fuente
¿Necesita analizar estructuras JSON arbitrarias o solo datos específicos de su aplicación? Si es lo último, puede hacerlo mucho más liviano y eficiente al no tener que generar ninguna estructura de mapa / tabla hash que asigne claves JSON a valores; en su lugar, puede almacenar los datos directamente en campos de estructura o lo que sea.
fuente