title: JSON as message exchange format
body: <p>When two programs, irresepective of the language they are implemented in, want to exchange messages, they can do so with a common format such as protobuf, or avro. For this, they use tools such as proto3 or avro-tools to generate class structures in multiple languages that can be used by the producer and consumer programs.</p>
  
  <p>If my message format needs to be JSON, is there a way I can achieve the same thing? Can I use a compiler to generate classes that will emit and consume JSON when serialized and deserialized?  </p>
  
  <p>I am saying JSON because I need the messages to be human-readable in addition to being program exchangeable.</p>