If you have only a few types to carry, and they are unlikely to change much, just define them at both ends.
If you have lots, share dll
No magic really ... json's design is completely free. In fact, even anonymous types serialize very well in most cases.
Personally, I would use class not a struct , though ... as always, prefer class if you don't have a good one why you use struct : in most cases they are used incorrectly.
source share