Maybe just do it the JSON+textarea route. Incidently there are other construct that needs to be supported. Examples.
- Line items added dynamically on client side (using JS) based on a client side template - Line items can be marked for deletion, update, or insert (relate to header) - Bulk update of header and items. Items can come multiple relatives (e.g. invoice items, audit log, etc.) A crude version of this was written by us for internal development (in Java) perhaps I can formalize this in a document and post it. Maybe, someone can implement it.

