PDA

Volledige versie bekijken : Object deserializen...


c0redump
%Europe/Berlin %959 %2008, 00:01
Ik krijg vanuit een database een String die alle variabelen van een Object voor moet stellen.

bijvoorbeeld een dergelijk object:

var testObject:Object =
{
colors:{color1:"#fff000", color2:"#000fff"},
size:300,
position:{x:10, y:100}
}
Een object met properties die ook weer een object kunnen zijn dus. Ik krijg dit op de volgende manier uit de database:
{colors:{color1:"#fff000", color2:"#000fff"},size:300,position:{x:10, y:100}}

Wat is nu de makkelijkste manier om hier weer een normaal object van te maken, zodat ik weer gewoon

trace(testObject.colors.color1); //outputs: #fff000;

kan doen?

Het enige wat ik kan verzinnen nu is die string te doorlopen en eerst op { te zoeken, vervolgens op : en alles wat daar tussen staat als eerste variabele te nemen, vervolgens kijken wat er achter de : staat, een karakter of een { en dan weer tzelfde te doen. En dan heel goed bijhouden hoeveel {'s je bent tegengekomen en welke } daar dan weer bij hoort. Vrij ingewikkeld dus. Dat moet toch makkelijker kunnen?

TheDutch
%Europe/Berlin %197 %2008, 05:44
Recursief matches uit voeren op de string met Regular Expressions. Dat is de meest eenvoudig oplossing die ik me zo kan bedenken om dit te deserializen. Kan je geen Regular Expressions dan wordt het een flink karwei om op karakter te moeten loopen opzoek naar { en }. :)

Dit is trouwens een uitzonderlijke manier van serializen naar een database van objecten.

c0redump
%Europe/Berlin %916 %2008, 22:59
Als er een betere manier is hoor ik die graag. Ik kan vast wel wat veranderen, maar niet in de structuur van de database in ieder geval. En het moet een String zijn, dus geen bytestring ofzo. En op zich vind ik het geen slechte notatie, ware t niet dat die objecten genest kunnen zijn...