Currently, as of 8/15/23, the deep linking feature corrupts any JSON data you pass to it. Instead of preserving the quotes in the JSON data, they get stripped out.
Steps to reproduce:
Take a valid piece of JSON data such as {"WorldEditID":"4783r634-dewfwe"}
URL-Encode the JSON data : %7B%22WorldEditID%22%3A%224783r634-dewfwe%22%7D
Call HttpService:JSONDecode() on the launch data via the Player:GetJoinData() API.
Observe that the JSON data is corrupt and thus cannot be decoded:
Hi @Noble_Draconian, I appreciate you flagging this. We are currently investigating. Our suggestion going forward is to not use raw URL-encoded JSON, or any other format using double-quote characters. What we have found helpful is to use Base64 encoding for LaunchData, as that’ll remain intact when being passed to us.
Sorry if I seem like a noob posting here without also experiencing this problem, but has anyone tried escaping the problem characters? I’ve had this problem with various services in the past and escape sequences has almost always been a solution, in over 90% of cases producing the intended output.
(Note that by escape sequences, I mean using backslashes ( \ ) or a similar don’t-process-this-as-control-character sequence; you can see CaptinLetus trying to use hexadecimal encoding above.)
Backslashes are invalid for URLs or produce undefined behaviour. You would need URL/percent encoding instead, assuming deeplinking supports it, though there are other ways to represent string content if you need it.