I've been hearing from some people that JSON is better, but I'd like to hear other people's opinions and maybe some advantages or disadvantages.
For example, should I use this code:
(mock-up)
local dss = game:GetService("DataStoreService") local http = game:GetService("HttpService") local store = dss:GetDataStore("whatever") local data = http:JSONDecode(store) --load data and do whatever local encodedData = http:JSONEncode(newData) store:SetAsync(tableOfData, encodedData)
(may not be correct as I did it loosely in the way another user did)
or the common way:
local dss = game:GetService("DataStoreService") local store = dss:GetDataStore("whatever") local data = store:GetAsync(tableOfData) --load data store:SetAsync(tableOfData, newData)
Data structures (such as tables) are automatically encoded to JSON upon set request to ROBLOX's data store service. For instance, there is no difference between...
DataStore:SetAsync(key, table)
DataStore:SetAsync(key, JSONEncode(table))
Encoding a table with JSON for the purpose of saving is redundant.
Although you don't need to encode a table in JSON to save it, you may want to. There is a character limit to the JSON-formatted data that you can save under one key (I think it's 2^16 characters or something like that). So, perhaps one might want to encode a table before saving it to check the length of the encoded data to see if it will save successfully. For example...
local HttpService = game:GetService("HttpService") local table = {} local JSON_table = HttpService:JSONEncode(table) -- check size limit of the data being saved if (#JSON_table >= 2^16) then -- don't save else -- save end
This is just one out of other potential uses of encoding data in JSON before saving it. I hope this helped. If you have any questions, just let me know.
This is based off of my old knowledge of DataStoreService
. Although I don't think any of this has changed, I will update this answer accordingly if I find out any new information.