我正在開發一個floorplanner Flex迷你應用程序。我只是想知道在生成PHP響應時,JSON或XML在性能方面是否更好。我目前正在傾向於JSON,因爲響應也可以重用於Javascript。我在其他地方讀過JSON比XML解析需要更長的時間,這是真的嗎?在Flex中處理XML與JSON數據的靈活性有什麼關係?XML或JSON響應PHP後端的Flex應用程序?
回答
JSON不是Flex的本地結構(奇怪,呵呵?你會認爲{}對象可以很容易地序列化,但不是真的),XML是。這意味着XML在虛擬機的幕後完成,而JSON字符串通過字符串操作被解析並轉化爲對象(即使您使用的是AS3CoreLib)......總之......我個人還看到了不一致在JSONEncoder中(在某一點上,數組只是數字索引的對象)。
將數據轉換爲AS3對象後,在XML中搜索和解析數據的速度仍然快於使用對象的速度。 XPath表達式使數據遍歷成爲一種樂趣(與其他事物相比,幾乎容易讓你微笑)。
另一方面,JS在解析JSON方面要好得多。好多了,好多了。但是,由於轉向JavaScript是「可能......有一天......」,那麼您可能會考慮「將來使用JSON值得目前的性能打擊嗎?」
但這裏有個問題,爲什麼不簡單地有兩個輸出?由於JS和AS都可以爲您提供幾乎任意數量的變量,您只需關心服務器如何發送未收到數據的數據。下面就來處理這個問題的潛在方法:
// as you are about to output:
$type = './outputs/' . $_GET[ 'type' ] . '.php';
if(file_exists($type) && strpos($type, '.', 1) === FALSE)
{
include($type);
echo output_data($data);
}
else
{
// add a 404 if you like
die();
}
之後,得到一個$ _GET [ '型']時== 'JS',js.php是:
function output_data($data){ return json_encode($data); }
當越來越$ _GET ['type'] =='xml',xml。PHP將持有的東西,其中output_data返回一個代表XML的字符串(大量的例子here)
當然,如果你使用的是一個框架,那麼你可以做一個像這樣的視圖,而不是(我的建議沸騰直到「你應該有兩個不同的視圖並使用MVC」)。
不,JSON在結構完全相同時總是小於XML。解析文本的成本幾乎達到目標文本的大小。
因此,JSON比XML更快,如果您有計劃在JavaScript端重用它們,請選擇JSON。
基準JSON VS XML: http://www.navioo.com/ajax/ajax_json_xml_Benchmarking.php
如果你曾經打算使用JavaScript它與JSON肯定去。兩者都有一個非常好的結構。
這取決於Flex如何很好地解析JSON,所以我會研究它。你將傳回多少數據?錯誤/成功消息?用戶檔案?這將包含什麼樣的數據?
它是否需要標籤上的屬性?或者只是一個「結構」。如果它需要屬性和類似的東西,並且你不想深入到「數組」這樣的結構中,那麼請使用XML。
如果你只是有鍵=>值,甚至多維...去與JSON。
全部取決於您將要傳遞哪種數據。這將使你的決定:)
下載時間:
JSON更快。
的JavaScript解析
JSON更快
的Actionscript解析
XML更快。 ActionScript中
高級使用
XML是與所有的E4X功能更好。 JSON是有限的,沒有載體的知識,這意味着你被限制爲陣列或將需要爲
else if (value is Vector.<*>) {
// converts the vector to an array and
return arrayToString(vectorToArray(value));
} else if (value is Object && value != null) {
private function vectorToArray(__vector:Object):Array {
var __return : Array;
var __vList : Vector.<*>;
__return = new Array;
if (!__vector || !(__vector is Vector.<*>))
{
return __return;
}
for each (var __obj:* in (__vector as Vector.<*>))
{
__return.push(__obj);
}
return __return;
}
一些諸如覆蓋JSON編碼器在ascorelib但恐怕讓這些值迴向量不爲好看。我必須爲此專門製作一個實用課程。
所以哪一個都取決於你將要移動的對象的先進程度。更先進的方法是,使用XML來讓ActionScript更容易。 簡單的東西去JSON
我會去與JSON。我們已經爲Flash Player添加了原生JSON支持,所以它在解析端與XML一樣快,而且它的冗長/小得多。
= Ryan [email protected]
- 1. 客戶端響應應用程序.Json
- 2. 後端JSON響應
- 3. PHP後端輸出JSON響應
- 4. 如何收集以JSON/XML的Android應用程序的響應
- 5. 後端應用程序應該如何響應錯誤或無效輸入?
- 6. HTTP與後凌空--- XML後,JSON響應
- 7. 使用Httpful解析XML或JSON API的響應PHP
- 8. 對json或hash的XML api響應?
- 9. 創建PHP webservice以響應android應用程序的JSON格式
- 10. REST響應 - HTML響應vs JSON或XML中「預期」的含義
- 11. 響應XML - PHP
- 12. 在應用程序內購買,後端PHP和iTunes的響應問題
- 13. PHP JSON響應
- 14. JSON響應 - PHP
- 15. 將XML傳遞給Flex應用程序
- 16. 谷歌應用程序引擎:後端沒有響應
- 17. Facebook應用程序:使用Flex或JQuery
- 18. tumblr作爲flex/actionscript應用程序的後端解決方案?
- 19. Android應用程序後端
- 20. Flex應用程序
- 21. 對JSON的SOAP響應(XML)
- 22. 如何計算Flex應用程序中的響應時間
- 23. 你會爲後端Web應用程序做什麼:Flex,GWT,JQuery?
- 24. Ruby應用程序的前端和PHP後端?
- 25. CakePHP應用程序作爲移動應用程序的後端
- 26. Rails應用程序作爲多個應用程序的後端
- 27. 如何打印php響應JSON響應
- 28. 調用php/cake網絡應用程序時無序列化xml響應
- 29. WPF應用程序前端後端
- 30. 將Rails JSON API用作桌面應用程序的後端
我目前正在傾向於您的策略。不過,我認爲XML和JSON解析都可以共享相同的「視圖」,因爲在這兩種情況下,檢索數據的邏輯是相同的,只有響應類型不同。但是,我將使用的數據只是平面圖上繪製的對象。因此,對於每個對象,它們只有像width,height,id和其他簡單的一維屬性的屬性,所以我認爲e4x的靈活性對我來說並不會有什麼好處,因爲這些屬性用於更復雜的數據集(糾正我if我錯了) – peter
@Peter如果真的那麼簡單,那麼你可能會更好地使用JSON - 唯一一次JSON真正成爲AS3的問題是具有非常大的數據集。 – cwallenpoole
以百萬記錄記錄的大型數據集?我的數據集不會超過一兩千條記錄。 – peter