2010-09-14 55 views
0

如果我的C#客戶端應用程序需要從Java服務器應用程序反序列化複雜的JSON,那麼我有什麼最佳選擇?我的C#客戶端應用程序需要反序列化Java應用程序發送的複雜JSON

以下是需要考慮的兩個條件: 1)速度是最重要的 2)Json格式可以包括有關Java數據類型,C#客戶端應用程序的信息。需要識別它並將其轉換爲C#c​​orespondent類型。例如,

...,"Variable1" : [ "java.math.BigDecimal", 0E-8 ], 
    "Variable2" : [ "com.xmlasia.x5.refdata.instrument.model.MarginGroup"],... 

國際海事組織因爲第2點,唯一的方法是建立我自己的解串器,我是對嗎?

關於第1點,如果我使用Json.net來反序列化Json,然後轉換爲ArrayList,它對速度有很大影響?還有其他更好的方法嗎?

ArrayList方法的缺點是extractJson方法變得非常混亂,我認爲arraylist很慢。

回答

1

我認爲最簡單的方法就是構建一些橋接器,將這個JSON轉換爲更具互操作性的東西。

1

「速度是最重要的」不太可能,否則數據需要以二進制格式發送。然而,所有主要的json解析器也很快,所以這不太可能成爲問題。

如果解析器剛剛忽略了java數據類型並根據您的.net對象中的字段名稱映射字段,那麼您可能沒有問題。否則,你需要一個json解析器,它會給你回字段的字典,以便你可以自己處理它們。 應該沒有必要寫你自己的字符串處理代碼來解碼json,這是一個解決的問題。

有很多JSON庫對.NET的,因爲它是一個很長的時間,因爲我看着他們,我不能推薦最好的一個適合你使用。

+0

http://stackoverflow.com/questions/391157/is-there-any-off-the-shelf-json-serialization-helper-class-in-net-bcl可能有助於使用json lib – 2010-09-14 11:53:06

+0

我們不會沒有選擇交通工具的形式。我們的責任是建立客戶。但感謝您的評論。 – 2010-09-15 01:40:45

+0

還有一件事,按二進制你是指在字節[]中傳輸?然後在節點處反序列化回JSON?反序列化和序列化byte []會花費更多嗎?再假設客戶端是C#,另一端是Java。 – 2010-09-15 02:34:36

相關問題