Ponder
C++ reflection library with Lua binding, and JSON and XML
...For example, Ponder can be used to expose and edit objects' attributes in a graphical user interface. It can also be used to do automatic binding of C++ classes to script languages such as Python or Lua. Another possible application would be the serialization of objects to XML, text or binary formats. Or you can even combine all these examples to provide a powerful and consistent interface for manipulating your objects outside C++ code.