The missing ingredient here, and why I kept the fields public and uppercase, was due to the lack of @JsonProperty annotations (that I finally found out about)
http://stackoverflow.com/questions/15303110/jackson-json-field-mapping-capitalization
Without it, those fields were never being recognized/serialized properly (and would always come back null). Fixed now!