On 04/24/2012 08:50 PM, Jacob Carlborg wrote:
On 2012-04-24 18:42, dcoder wrote:
Hello.
I'm probably not looking hard enough, but.... Do we have any standard
d-library for serializing an object/object tree into -for example- an
xml file?
thanks.
You can have a look at Orange:
https://github.com/jacob-carlborg/orange
Tutorials:
http://dsource.org/projects/orange/wiki/Tutorials
API reference:
http://dl.dropbox.com/u/18386187/orange_docs/orange.serialization.Serializer.html
Does it automatically pick everything to serialize?
How would you make it more selective?
struct Me
{
int x;
int y;
}
serialize x but not y.
Would you have to create a custom serializer?
If so I would like to see an example with the custom serializer and
deserializer that only does the x.
Basic Example
Serialize Through Base Class
Register Serializer?
There is no register serializer example.
277 private void serializeStruct (T) (T value, string key, Id id)
278 {
279 string type = T.stringof;
280
281 triggerEvents(serializing, value, {
282 archive.archiveStruct(type, key, id, {
283 if (type in serializers)
284 {
285 auto wrapper = getSerializerWrapper!(T)(type);
286 wrapper(value, this, key);
287 }
288
289 else
290 {
291 static if (isSerializable!(T))
292 value.toData(this, key);
293
294 else
295 objectStructSerializeHelper(value);
296 }
297 });
298 });
299 }
I assume that the wrapper is the custom serializer that can be registered.
Then there is the toData that a struct can have, basically
member functions that do the serialization. Priority is
given to the registered serializer over the member functions.
And the last one. ObjectStructSerializerHelper is more a default
serializer if none is registered or doesn't have the correct
isSerializable member functions.
ObjectStructSerializerHelper(T) (T .....)
Just browsing, I haven't downloaded anything.