Saving plots as dictionary

I’m trying to save, essentially, a Model’s Name and a CFrame attribute in a dictionary, the format goes like this

local _playerData = {
		["Furnitures"] = {"s","d","f"}
		["Plots"] = {
			["testdummee"] = {-- m:getattribute("pivot")
				["CFrame"] = table.pack(CFrame.new():GetComponents())
			}
		}
	}

However it exceeds the size limit and I am unable to save dictionarities to datastores, I was thinking of using buffer but how would I approach that?

On save.

local function _serializePlots(t)
	
	local _plots = {}
	for _,v in workspace._Furnitures:GetChildren() do
		if v:HasTag("_noBB") then continue end
		table.insert(_plots, v)
	end

	for _,v in _plots do
		local m = require(ServerStorage._Assets._Modules._Data.Serialize).SerializeModel(v)
		table.insert(t, m)
	end

	table.clear(_plots)
	_plots = nil
	return t
end

_playerDataGreenhouse.Plots = _serializePlots({})
local setSuccess, errorMessage = pcall(function()
	_playersStoreGH:SetAsync(tostring(Player.UserId), _playerDataGreenhouse)
end)

local function _serializeCFrame(M: Model)
	return {M:GetAttribute("_pivot")}
end

-- This returns a {[ModelName] = ["CFrame"] = SerializedCFrame}
Serialize.SerializeModel = function(Model : Model)
	return {[Model.Name] = {["CFrame"] = _serializeCFrame(Model)}}
end
local SerializeModel = function(Model : Model)
	return {[Model.Name] = _serializeCFrame(Model)}
end 

local p = {} -- _playerDataGreenhouse.Plots

local function _getPlotsFromFurniture()
	return workspace._Furnitures:GetChildren()
end

for _,v in _getPlotsFromFurniture() do
	table.insert(p, SerializeModel(v))
end

for m,v in p do
	for name, cframe in v do
		print(name, cframe[1], buffer.tostring(cframe[1]))
	end
end

I tried buffer but is there a better approach to make it smaller?

CFrame now becomes deformed.
image

local function _serializeCFrame(M: Model)
	return {buffer.fromstring(tostring(M.PrimaryPart.CFrame))}
end

Serialize.SerializeModel = function(Model : Model)
	return {[Model.Name] = _serializeCFrame(Model)}
end 

local function _unpackCFrameFromString(s: string)
	return CFrame.new(table.unpack(s:split(", ")))
end

Serialize.DeserializeModels = function(d)
	for m,v in d do
		for name, cframe in v do
			local _furniture : Model = ReplicatedStorage:FindFirstChild(name)
			if not _furniture then
				warn(("%s wasn't found."):format(name))
				continue
			end
			if workspace._Furnitures:FindFirstChild(name) then continue end
			_furniture = _furniture:Clone()
			_furniture:PivotTo(_unpackCFrameFromString(buffer.tostring(cframe[1])))
			_furniture.Parent = workspace._Furnitures
		end
	end
end