Tested with VRChat client build [1899].
VRCJson.TryDeserializeFromJson returns an incorrect string when valid JSON contains a supplementary Unicode character encoded as a UTF-16 surrogate pair.
Reproduction code:
string json = @"{""x"":""\uD83C\uDF63""}";
bool success = VRCJson.TryDeserializeFromJson(json, out DataToken root);
Debug.Log("Success: " + success);
if (success)
{
Debug.Log("Value: " + root.DataDictionary["x"].String);
}
Expected output:
Success: True
Value: 🍣
Actual output:
Success: True
Value: \uuDF63
The JSON is valid.
\uD83C\uDF63
is the JSON surrogate-pair representation of U+1F363 (🍣).
Deserialization reports success, but the resulting string does not match the value represented by the JSON.