De-serialze char array to object
古いコメントを表示
Hi,
I'm trying to convert a char array to an object. The char array used to be a MATLAB object which has been serialized and has a structure like this:
hBeams.stackUseStartPower = 1
hBeams.stackUserOverrideLz = false
hChannels.channelAdcResolution = {12 12 12 12}
hChannels.channelDisplay = [1;2;3;4]
(This is just a small portion of the char, there is much more data in reality).
Basically, I wat to de-serialze the string and recover the object so I can access its values.
When I use eval() it parses the string into an object and stores it in the current workspace. However, I need to store the data in a variable of another object.
Also, since it is usually not recommended to use eval(), is there a better (more elegant) way to do this?
Best,
Gebhard
回答 (1 件)
Stephen23
2018 年 11 月 22 日
0 投票
"is there a better (more elegant) way to do this?"
save and load, or:
5 件のコメント
Gebhard Stopper
2018 年 11 月 22 日
"This is done by a third-party application."
"The only thing I get is a long char array with the text representation of an object."
Ouch, what a badly designed application!
Easy-but-ugly solution: Print the character data to a script, and then run that script. Or evaluate the string. Either way that badly designed code forces you to do something ugly and inefficient.
Complex-but-efficient solution: You might be able to write a parser for that character array, if you have a specification for the kind of data that it contains, how it is structured, etc..
Guillaume
2018 年 11 月 22 日
Ouch, indeed!
Third option: ditch the 3rd party application. It doesn't inspire much confidence. What other gremlins does it hide?
Gebhard Stopper
2018 年 11 月 22 日
Guillaume
2018 年 11 月 22 日
so I guess there are not many options how to store that data
There are plenty of well established techniques for storing metadata. In TIFF files, they could have used private tags (and documented them). Alternatively, they could have used common serialisation formats instead of inventing their own. The two most common serialisation formats, json and xml, are both supported by matlab and can be transformed into a single variable in one line:
settings = jsondecode(serialisedstream);
カテゴリ
ヘルプ センター および File Exchange で JSON Format についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!