没有看到现成的,自己用递归算法写了一个,发现json的大小没有小到多少,还把注释和换行都去掉了。还是用xml吧。
private function xmltoObject(xml:XML):Object
{
var obj = new Object();
var ls:XMLList = xml.children();
var atts:XMLList = xml.attributes();
for each (var att:XML in atts)
{
obj[att.name().toString()]= att.toString();
}
if(ls.length() > 0)
{
for each(var node:XML in ls)
{
var objsub:Object = xmltoObject(node);
var tmp:Object = obj[node.name()];
if(tmp==null)
{
obj[node.name()]=objsub;
}
else if(tmp is Array)
{
(tmp as Array).push(objsub);
}
else
{
obj[node.name()]=new Array(tmp,objsub);
}
}
}
return obj;
}
protected function ConvertXMLToJSON():void {
var f:File = File.documentsDirectory.resolvePath("file:///D|/item.xml");
var fs:FileStream = new FileStream();
fs.open(f,FileMode.READ);
fs.position=0;
var str:String = fs.readUTFBytes(fs.bytesAvailable);
fs.close();
var xml:XML = new XML(str);
var xmlobj:Object = xmltoObject(xml);
var js:JSONEncoder = new JSONEncoder(xmlobj);
var strjson:String = js.getString();
var f2:File = File.documentsDirectory.resolvePath("file:///D|/itemjson.json");
var fs2:FileStream =new FileStream();
fs2.open(f2, FileMode.WRITE);
fs2.writeUTFBytes(strjson);
fs2.close();
}