I am not sure if this helps, but if the object has correct structure as far as number/type columns, at the moment you could do something like this:
>>> nt = NtTable([STRING, INT, DOUBLE])
>>> nt.setColumn(0, ['xx', 'yy', 'zz'])
>>> nt.setColumn(1, [1, 2, 3])
>>> nt.setColumn(2, [11.1, 22.2, 33.3])
>>> nt.useNumPyArrays=False
>>> myString = json.dumps(dict(nt))
>>> print(myString)
{"labels": [], "value": {"column0": ["xx", "yy", "zz"], "column1": [1, 2, 3], "column2": [11.1, 22.2, 33.3]}, "descriptor": "", "timeStamp": {"secondsPastEpoch": 0, "nanoseconds": 0, "userTag": 0}, "alarm": {"severity": 0, "status":
0, "message": ""}}
>>> nt2 = NtTable([STRING, INT, DOUBLE])
>>> nt2.set(json.loads(myString))
>>> print(nt2)
epics:nt/NTTable:1.0
string[] labels []
structure value
string[] column0 [xx, yy, zz]
int[] column1 [1,2,3]
double[] column2 [11.1,22.2,33.3]
string descriptor
time_t timeStamp
long secondsPastEpoch 0
int nanoseconds 0
int userTag 0
alarm_t alarm
int severity 0
int status 0
string message
>>>