https://github.com/quartzjer/js0n
más feo interfaz posible, pero hace lo que se le pregunte. Zero allocations.
http://zserge.com/jsmn.html Otro enfoque de asignación cero.
Las soluciones publicadas anteriormente hacen asignación de memoria dinámica, por lo tanto, inevitablemente terminarán más lentas en algún momento, dependiendo de la estructura de datos, y será peligroso incluirlas en un entorno restringido como un sistema integrado.
Los puntos de referencia de vjson, rapidjson y sajson aquí: http://chadaustin.me/2013/01/json-parser-benchmarking/ si estás interesado en ese tipo de cosas.
Y para responder a su parte "escritor" de la cuestión i duda que podría vencer a un eficiente aplicación
printf("{%s:%s}",name,value)
con cualquier biblioteca - asumiendo que su aplicación printf/sprintf sí es de peso ligero, por supuesto.
EDITAR: en realidad, permítanme retroceder, RapidJson permite la asignación en la pila solo a través de su MemoryPoolAllocator y, de hecho, hace que esto sea un valor predeterminado para su GenericReader. No he hecho la comparación, pero espero que sea más robusta que cualquier otra lista aquí. Tampoco tiene dependencias, y no arroja excepciones que probablemente lo hagan finalmente apto para incrustado. Lib completo basado en encabezado así que es fácil de incluir en cualquier lugar.
¿Cómo no te importa la bondad de una API de biblioteca? –
Me importa la bondad de API, pero la mayoría de los libs disponibles tienden a sacrificar velocidad cuando intentan hacer que la interfaz sea agradable y fácil de usar. Para mi velocidad de propulsión es uno de los requisitos más críticos. – user424060
Entiendo el sentimiento.Pero * siempre * elegí primero la biblioteca mejor respaldada/mejor diseñada, y construí un prototipo de ella, para verificar si la implementación de JSON está en la ruta crítica, y si hay algún sacrificio en términos de legibilidad/mantenibilidad en realidad tener sentido. Mida, optimice, mida. – DevSolar