Normally I would recommend JSON, but in this case I think XML is more appropriate.
I'm considering the amount of work needed:
to extend the file format (future features/devices/links/...)
to validate the file (schema)
to convert the file format (transformation)
to convert part of the file as config data for another software GNS3 works with (transformation)
to support plugins that need to keep metadata in the file
If done properly, extending the file format shouldn't be a problem. Also, there are libs to validate JSON schemas. I don't know about transformation...
but the major problem is I hate XML... ;) One of the thing is that XML is not nice to your eyes and to edit.
For communication between software I would definitely go with JSON. ^^
Yep, this is gonna be JSON for sure.
Thanks for the input.