Skip to content

Commit e9a0b56

Browse files
committed
writeSignalTable(..): Do not store elements, that cannot be mapped to JSON (e.g. structs).
1 parent 141c844 commit e9a0b56

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

src/SignalTableFunctions.jl

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -681,7 +681,10 @@ function encodeSignalTable(signalTable; signalNames=nothing)
681681
end
682682
for name in signalNames
683683
signal = getSignal(signalTable, name)
684-
jdict[name] = encodeSignalTableElement(name, signal)
684+
encodedSignal = encodeSignalTableElement(name, signal)
685+
if !isnothing(encodedSignal)
686+
jdict[name] = encodedSignal
687+
end
685688
end
686689
return jdict
687690
else
@@ -696,23 +699,28 @@ end
696699
Encodes a signal table element suitable to convert to JSON format.
697700
"""
698701
function encodeSignalTableElement(path, element)
699-
if isVar(element)
700-
jdict = OrderedDict{String,Any}("_class" => "Var")
701-
for (key,val) in element
702-
if key != :Var
703-
jdict[string(key)] = encodeSignalTableElement(appendNames(path,key),val)
704-
end
702+
if isSignal(element)
703+
if isVar(element)
704+
jdict = OrderedDict{String,Any}("_class" => "Var")
705+
else
706+
jdict = OrderedDict{String,Any}("_class" => "Par")
705707
end
706-
return jdict
707-
708-
elseif isPar(element)
709-
jdict = OrderedDict{String,Any}("_class" => "Par")
708+
available = true
710709
for (key,val) in element
711-
if key != :Par
712-
jdict[string(key)] = encodeSignalTableElement(appendNames(path,key),val)
710+
if key != ":_class"
711+
encodedSignal = encodeSignalTableElement(appendNames(path,key),val)
712+
if isnothing(encodedSignal)
713+
available = false
714+
else
715+
jdict[string(key)] = encodedSignal
716+
end
713717
end
714718
end
715-
return jdict
719+
if available
720+
return jdict
721+
else
722+
return nothing
723+
end
716724

717725
elseif typeof(element) <: AbstractArray && (elementBaseType(eltype(element)) <: Number || elementBaseType(eltype(element)) <: String)
718726
if ndims(element) == 1 && string(elementBaseType(eltype(element))) in TypesWithoutEncoding

0 commit comments

Comments
 (0)