String values should marshal/unmarshal to struct when MarshalText/UnmarshalText are implemented. both the encoding/json and encoding/xml packages provide this capability so it should be a matter of letting the underlying library do the encoding/decoding.