I haven't tried it with lua-enet but you can use lua-MessagePack to encode arbitrary data into a string. It isn't too space efficient but it should work if you don't have a large amount of things to synchronize.
http://fperrad.github.io/lua-MessagePack
Here is an example of how I encoded a couple Vec3s into a string to be sent via lua-enet (or whateva)
mp = require 'Scripts/Functions/MessagePack'
thing1 = Vec3()
thing1.x = 1.123
thing1.y = 2.234
thing1.z = 3.345
thing2 = Vec3()
thing2.x = 4.123
thing2.y = 5.234
thing2.z = 6.345
data = {{x=thing1.x, y=thing1.y, z=thing1.z}, {x=thing2.x, y=thing2.y, z=thing2.z}}
mp.set_number'float'
mp.set_array'with_hole'
mp.set_string'string'
mpac = mp.pack(data)
System:Print("Len="..string.len(mpac))
unpacked_data = mp.unpack(mpac)
System:Print("pos.x="..unpacked_data[1].x.."pos.y="..unpacked_data[1].y.."pos.z="..unpacked_data[1].z)
System:Print("pos.x="..unpacked_data[2].x.."pos.y="..unpacked_data[2].y.."pos.z="..unpacked_data[2].z)
Result
Len=45
pos.x=1.1230000257492pos.y=2.2339999675751pos.z=3.3450000286102
pos.x=4.1230001449585pos.y=5.2340002059937pos.z=6.3449997901917
45 bytes compared to 24 if it was raw c++. Not ideal but it'd work.
EDIT: I'm dumb, require works fine, no change required to MessagePack.lua