我可以在不更改项目顺序的情况下将 JSON 字符串转换为 Flex ArrayCollection 吗?

Posted

技术标签:

【中文标题】我可以在不更改项目顺序的情况下将 JSON 字符串转换为 Flex ArrayCollection 吗?【英文标题】:Can I convert a JSON string to a Flex ArrayCollection in without changing the item order? 【发布时间】:2013-06-26 02:38:30 【问题描述】:

关于这个问题,我已经从Java动态生成字符串。每次字符串格式改变,例如字符串格式是

["BranchName":"Corporate Office","Date":"08\/03\/2013","SPName":"Pharmacy","SPAmount_5-00%":"100.00","SPVATAmount_5-00%":"15.00","SPOtherCharges_5-00%":"30.00","SPAmount_14-50%":"200.00","SPVATAmount_14-50%":"39.00","SPOtherCharges_14-50%":"71.00","SPColTPA":"100.00","SPColChequeDD":"50.00","SPHdfcCC":"100.00","SPIdbiCC":"100.00","SPColCash":"50.00","Difference":"55.00",

但是当我使用以下代码转换数组集合时。

var rawData:String = String(event.result); 
var arr:Array = (JSON.decode(rawData) as Array);
var dp:ArrayCollection = new ArrayCollection(arr);

但数组集合顺序更改为默认排序,如 [Branch, Date, Difference,.. ] 。但我想要与字符串格式顺序相同。那么如何防止默认订单。

【问题讨论】:

如果您包含有关生成的 ArrayCollection 的详细信息,可能会有所帮助。您控制转换的能力有限。您最好的选择可能是事后对 ArrayCollection 进行排序。 【参考方案1】:

实际上,您在此处描述的是一组对象(您的示例仅包含一个对象)。在 JSON 解析为数组的过程中,每个对象确实是按照声明的顺序排列的;但在创建的 OBJECTS 中,属性可能不会以相同的顺序列出。

例如:

'[ "Branch":"Corporate", "Department":"Finance", "Cost":"10000", "Attended":"true",' +
'"Branch":"Las Vegas", "Department":"Hospitality", "Cost":"20100", "Attended":"false",' +
'"Branch":"San Diego", "Department":"Banking", "Cost":"11023", "Attended":"true"]'

解析将 arr[0] 作为 Corporate 对象返回,arr[1] 作为 Las Vegas 对象,等等。遍历我得到的属性:

var obj:Object = dp.getItemAt(0);
for (var prop:String in obj) 
    trace(prop + ' is ' + obj[prop]);


Department is Finance
Attended is true
Branch is Corporate
Cost is 10000

【讨论】:

以上是关于我可以在不更改项目顺序的情况下将 JSON 字符串转换为 Flex ArrayCollection 吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不将 LocalDateTime 字段转换为扩展的 json 对象的情况下将 java 对象转换为简单的 json 字符串?

如何在不使用 C# 中的 T 对象的情况下将 Json 数组转换为单个 JSON 对象?

我想在不更改其属性的情况下将 xml 元素“产品”重命名为“项目”,但我不知道该怎么做

在不重载的情况下将 JSON api 连接到 tableView

如何在不更改其参考的情况下将更改应用于张量/向量的元素?

如何在不丢失值的情况下将 json 解析为 pandas 数据框? [复制]