@@ -307,7 +307,11 @@ function unpackVariable(
307
307
308
308
# FIXME , drop nested packing, see DFG #867
309
309
# string serialization using packVariable and CGDFG serialization (Vector{String})
310
- tags = Symbol .(packedProps[" tags" ])
310
+ tags_ = if packedProps[" tags" ] isa String
311
+ Symbol .(JSON2. read (packedProps[" tags" ], Vector{String}))
312
+ else
313
+ Symbol .(packedProps[" tags" ])
314
+ end
311
315
312
316
# FIXME , drop nested packing, see DFG #867
313
317
ppeDict = if unpackPPEs && haskey (packedProps," ppesDict" )
@@ -345,15 +349,24 @@ function unpackVariable(
345
349
isnothing (variableType) && error (" Cannot deserialize variableType '$variableTypeString ' in variable '$label '" )
346
350
pointType = getPointType (variableType)
347
351
352
+ _ensureid! (s:: Dict ) = begin s[" id" ] = haskey (s, " id" ) ? s[" id" ] : nothing end
353
+ _ensureid! (s:: PackedVariableNodeData ) = s
354
+
348
355
# FIXME , drop nested packing, see DFG #867
349
356
solverData = if unpackSolverData && haskey (packedProps, " solverDataDict" )
350
357
packed = if packedProps[" solverDataDict" ] isa String
351
- JSON2. read (packedProps[" solverDataDict" ], Dict{String, PackedVariableNodeData})
358
+ # JSON2.read(packedProps["solverDataDict"], Dict{String, PackedVariableNodeData})
359
+ # JSON3.read(packedProps["solverDataDict"], Dict{String, PackedVariableNodeData})
360
+ jdc = JSON. parse (packedProps[" solverDataDict" ])
361
+ jpvd = Dict {String,PackedVariableNodeData} ()
362
+ for (k,v) in jdc
363
+ _ensureid! (v)
364
+ jpvd[k] = transcodeType (PackedVariableNodeData, v)
365
+ end
366
+ jpvd
352
367
else
353
368
packedProps[" solverDataDict" ]
354
369
end
355
- _ensureid! (s:: Dict ) = begin s[" id" ]= nothing ; end
356
- _ensureid! (s:: PackedVariableNodeData ) = s
357
370
packedvals = values (packed)
358
371
_ensureid! .(packedvals)
359
372
# TODO deprecate, this is for DFG18 compat only
@@ -365,17 +378,20 @@ function unpackVariable(
365
378
# Rebuild DFGVariable using the first solver variableType in solverData
366
379
# @info "dbg Serialization 171" variableType Symbol(packedProps["label"]) timestamp nstime ppeDict solverData smallData Dict{Symbol,AbstractDataEntry}() Ref(packedProps["solvable"])
367
380
# variable = DFGVariable{variableType}(Symbol(packedProps["label"]), timestamp, nstime, Set(tags), ppeDict, solverData, smallData, Dict{Symbol,AbstractDataEntry}(), Ref(packedProps["solvable"]))
368
- variable = DFGVariable ( id = id,
369
- Symbol (packedProps[" label" ]),
370
- variableType,
371
- timestamp= timestamp,
372
- nstime= nstime,
373
- tags= Set {Symbol} (tags),
374
- estimateDict= ppeDict,
375
- solverDataDict= solverData,
376
- smallData= smallData,
377
- dataDict= Dict {Symbol,AbstractDataEntry} (),
378
- solvable= packedProps[" solvable" ] )
381
+
382
+ variable = DFGVariable {variableType} (;
383
+ id= id,
384
+ label = Symbol (packedProps[" label" ]),
385
+ # variableType = variableType,
386
+ timestamp = timestamp,
387
+ nstime = nstime,
388
+ tags = Set {Symbol} (tags_),
389
+ ppeDict = ppeDict,
390
+ solverDataDict = solverData,
391
+ smallData= smallData,
392
+ dataDict = Dict {Symbol,AbstractDataEntry} (),
393
+ solvable = Ref (Int (packedProps[" solvable" ]))
394
+ )
379
395
#
380
396
381
397
# Now rehydrate complete DataEntry type.
0 commit comments