Analizando JSON usando C

Estoy tratando de encontrar una buena manera de analizar JSON en C. Realmente no necesito una gran biblioteca ni nada, preferiría tener algo pequeño y liviano con un mínimo de características, pero con buena documentación.

¿Alguien tiene algo a lo que puedan dirigirme?

Json no es un lenguaje enorme para empezar, por lo que es probable que las bibliotecas sean pequeñas (por ejemplo, que las bibliotecas Xml).

Hay un montón de bibliotecas de C vinculadas en Json.org . Tal vez uno de ellos te funcione bien.

cJSON tiene una API decente y es pequeña (2 archivos, ~ 700 líneas). Muchos de los otros analizadores JSON que miré al principio eran enormes … Solo quiero analizar algunos JSON.

Editar: Hemos realizado algunas mejoras en cJSON a lo largo de los años.

Jsmn es bastante minimalista y solo tiene dos funciones con las que trabajar.

http://zserge.bitbucket.org/jsmn.html

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; ilength; 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); 

Usé 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, funciones *_put equivalentes para liberar su memoria, y funciones de utilidad que convierten tipos y objetos de salida en representación de cadenas.

La licencia permite la inclusión con su proyecto. Lo usamos de esta manera, comstackndo JSON-C como una biblioteca estática que está vinculada con la comstackción principal. De esta forma, no tenemos que preocuparnos por las dependencias (que no sean la instalación de 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.

Puedes echar un vistazo a Jansson

El sitio web indica lo siguiente: Jansson es una biblioteca C para codificar, decodificar y manipular datos JSON. Cuenta con:

  • Modelo de API y datos simple e intuitivo
  • Puede codificar y decodificar desde JSON
  • Documentación completa
  • Sin dependencias en otras bibliotecas
  • Soporte completo Unicode (UTF-8)
  • Amplio conjunto de pruebas

¿Necesita analizar estructuras JSON arbitrarias, o solo datos específicos de su aplicación? Si es lo último, puede hacer que sea mucho más ligero y más eficiente al no tener que generar ninguna estructura de tabla / mapa de asignación de claves JSON a los valores; en su lugar, puede almacenar los datos directamente en campos de estructura o lo que sea.