在AS3中转换JSON/XML

在AS3中转换JSON/XML,xml,actionscript-3,json,casting,Xml,Actionscript 3,Json,Casting,在项目中使用FlashDevelop,并切换到FDT/Eclipse。我正在对代码中的数百个警告进行排序 相当多的内容与该项目使用的XML和JSON语法有关。在下文中,我不确定如何将包含数据的XML转换为编译器可以识别的格式 例如: public function convertXMLToAssets(file:XML):void { var data:XML = new XML(file.data); var id:int = data.item.id; //etc }

在项目中使用FlashDevelop,并切换到FDT/Eclipse。我正在对代码中的数百个警告进行排序

相当多的内容与该项目使用的XML和JSON语法有关。在下文中,我不确定如何将包含数据的XML转换为编译器可以识别的格式

例如:

public function convertXMLToAssets(file:XML):void
{
    var data:XML = new XML(file.data);
    var id:int = data.item.id;
    //etc
}

//gives Warning: Could not resolve variable (may be a dynamic member) data at line 59 

因为E4X中的所有内容都是XML对象或字符串,所以我非常怀疑
data.item[I].id
是否可以是数字。如果ID是浮点,则使用
parseFloat(data.item[i].ID)
,如果它只是一个int,则使用
+data.item[i].ID

编辑:是否有多个
?如果是这样,我想您需要
数据..item[0].id
。以下是一些我认为你可能想尝试的东西:

  • data..item[0].id
  • data..item[0]。@id
  • data.id
  • 数据。@id

文件:字符串没有“数据”属性(String.data无效)。它是一个URL加载器吗?在这种情况下,将其更改为file:urloader,或者其他任何形式(对象可能?)。
另外,我没有看到“I”变量的声明,它是类成员吗?

这不是警告,这是一个真正的错误。。。字符串没有属性数据,正如Cay提到的。。。我想知道你是怎么用FD编译的。。。你是用CS3还是用FlexSDK编译的

应该是这样的

var data:XML = XML(file);
var id:int = data.item.id;/*if your xml looks something like 
          <%ROOT%>
                <item>
                    <id>%SOMEINT%</id>
                </item>
         </%ROOT%>*/
JSON和XML有着极其不同的语义,
XMLNode
,您提到的是ActionScript 2遗留版本,您不应该使用。。。无意冒犯,但我认为您应该看看JSON或XML/E4X教程,因为您编写的代码和您所说的,不知怎的让我相信,您不理解一些基本的东西,例如一般过程:

源字符串--解析/解组-->中间对象树--遍历-->提取的数据


您既不能直接对源字符串进行操作,也不能自由交换中间对象树,因此遍历也取决于使用的数据编码格式(您不能使用E4X遍历解析的JSON,但JSON是ActionScript值的语义等价表示)我使用了一个技巧来避免这些警告

您可以使用data['item']['id']来代替data.item.id符号

是的,这有点难看,但是用这个符号你不会得到警告


不要滥用这种符号,因为这样可以避免任何编译时检查。只在你确信它是正确的地方使用,否则就无法摆脱警告。例如,对于XML数据,如您所示。

如果我解析或转换float/int/Number,“item”仍然不是一个可识别的可解析变量,并且正在抛出一个警告(仅使用FDT/Eclipse)@cat biscuite:您能编辑您的原始帖子以显示如果您尝试解析/转换时的错误吗?啊,我的错误。我将编辑示例代码。那是我的问题。。。我想知道,人们在使用JSON时是如何解决这个问题的,比如将其转换为XMLnode?也许我应该忽略警告我为错误道歉,我不能很好地检查它!在比较XML和JSON/对象数组等时,我的观点是转换编译器不知道存在的参数/变量。由于警告出现在常见的库文件中,比如Tweener,我经常使用,所以我不必太担心,但我想知道是否有其他方法可以转换XML或对象。同时,我将尝试更改FDT中的设置
var data:XML = JSON.decode(file);
var id:int = data.item.id;/*if your JSON looks something like
         { item : { id: %SOMEINT% } }