SnakSerializer should have support for derived values. The extra DataValues would be placed next to the "datavalue". E.g. an extra value in the "normalized" slot would show up as "datavalue-normalized" in the serialization, like so:
"mainsnak":{"snaktype":"value","property":"P646","datatype":"string", "datavalue":{"value":"/m/0g5n7","type":"string"}, "datavalue-normalized":{"value":"https://www.freebase.com/m/0g5n7","type":"string"}, }