Arrays 无法在Flex中解码JSON数据
我是Flex的新手。我试图使用下面的代码将JSON数据填充到Datagrid中。但我未能解码JSON数据。我在flex项目中添加了as3corelib.swc。我试图从java后端填充JSON数据,但失败了,出现了下面提到的错误(在页面末尾给出)。因此,尝试这个简单的例子来了解JSON解码器是否有效。我参考了很多网络资源,下面的代码似乎是有效的Arrays 无法在Flex中解码JSON数据,arrays,json,apache-flex,Arrays,Json,Apache Flex,我是Flex的新手。我试图使用下面的代码将JSON数据填充到Datagrid中。但我未能解码JSON数据。我在flex项目中添加了as3corelib.swc。我试图从java后端填充JSON数据,但失败了,出现了下面提到的错误(在页面末尾给出)。因此,尝试这个简单的例子来了解JSON解码器是否有效。我参考了很多网络资源,下面的代码似乎是有效的 var jsonObj:Object = (JSON.parse(event.result.toString())); var arr:ArrayCol
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
寻求您在这方面的宝贵指导
private function applicationCompleteHandler():void
{
var channel:AMFChannel = new AMFChannel("my-amf", "hxxp://localhost:8400/springapp/messagebroker/amf");
var channelSet:ChannelSet = new ChannelSet();
channelSet.addChannel(channel);
po.channelSet = channelSet;
//po.findAll();
var httpService:HTTPService=new HTTPService();
httpService.resultFormat="text";
httpService.url="http://date.jsontest.com/?service=ip"
httpService.method=HTTPRequestMessage.POST_METHOD;
httpService.contentType="application/json";
httpService.send();
httpService.addEventListener(ResultEvent.RESULT, onJSONLoad);
}
private function onJSONLoad(event:ResultEvent):void
{
var rawData:String=String(event.result);
var arr:Array=(com.adobe.serialization.json.JSON.decode(rawData) as Array);
var dp:ArrayCollection=new ArrayCollection(arr);
dg.dataProvider=dp;
}
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
不使用数组,而是使用如下所示的对象
private function onJSONLoad(event:ResultEvent):void
{
var jsonObj:Object= com.adobe.serialization.json.JSON.decode(urlLoader.data);
trace(jsonObj.forecastList[0].dayDesc);
}
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
我有一个不同的json格式,所以请使用您的json格式来标记对象,或者向我显示您的json格式或URL
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
如果您没有问题,那么使用urlRequest和urlLoader,而不是使用httpservice,这样会更好。谢谢Subrat和Brian
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
我认为问题在于JSON输入格式。Java正在以对象结构发送JSON数据。所以我找到了一个提供JSON样本数据的网站。然后在调试时,我发现该网站以纯文本形式共享数据,这与java后端发送的数据完全不同。代码如下
private function onJSONLoad(event:ResultEvent):void
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
{
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
}
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
虽然我在运行这段代码时遇到了一些跨域问题,但我能够调试这段代码,并且数据按照预期填充到了我的datagrid中
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
因此,我可能会尝试修复从Java后端发送到UI的格式
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
我在后端使用net.sf.json创建JSONArray。如果这不起作用,我将在Flex中使用RemoteObject并设法填充我的datagrid:(
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);
再次感谢各位。在调用JSON.decode之前,您能发布行中
rawData
变量的内容吗?感谢Brian.rawData包含[rawData=“{ip:“129.178.182.9”}],arr变量为空。根据jsonlint.com,{ip:“129.178.182.9”}
是有效的JSON,但“{”ip:“129.178.182.9”}”
和[rawData=“{”ip:“129.178.182.9”}]
不是。在将rawData字符串传递给解码器之前,您可能需要修剪它以确保它是有效的JSON。
var jsonObj:Object = (JSON.parse(event.result.toString()));
var arr:ArrayCollection = new ArrayCollection(jsonObj.heroes as Array);
var arrobj:ArrayCollection = new ArrayCollection(jsonObj as Array);
this.dg.dataProvider = new ArrayCollection(jsonObj.heroes as Array);