Deeplinking corrupts JSON data

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:

  1. Take a valid piece of JSON data such as {"WorldEditID":"4783r634-dewfwe"}
  2. URL-Encode the JSON data : %7B%22WorldEditID%22%3A%224783r634-dewfwe%22%7D
  3. Call HttpService:JSONDecode() on the launch data via the Player:GetJoinData() API.
  4. Observe that the JSON data is corrupt and thus cannot be decoded:

Expected behavior

It is expected that JSON data passed in a deep-link URL would not be corrupted

8 Likes

I am also having this issue

For me, it removes the quotes, and only gives me partial data, but I’ve also that error using different data

%7B%22roomId%22%3A%202%7D

Should be {"roomId": 2} but its giving me {roomId

There are many other reports on this post Developer Deeplinking [Beta] - Updates / Announcements - Developer Forum | Roblox

2 Likes

This bug still seems to be persisting - has broken our gifting links entirely.

1 Like

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.

7 Likes

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.

Hello,

is there any estimated time when your investigation will be finished?
Using Base64 encoding is not very helpful either and does break too.

Thank you.

1 Like