2011-10-09 116 views
0

(請記住我完全對Java和Android)解析數據

做完了幾個測試中,我可以看到它是很輕鬆使Web服務調用Android中檢索結果並使用一些簡單的自定義代碼獲取該值。

例如:

Assuming a response string as such: {"d":"Hello World"} 

JSONObject obj = new JSONObject(responseString); 
String result = obj.getString("d"); 
//Result = Hello World 

太好了!這使得使用一些自定義代碼檢索數據變得非常簡單。但是,如果您開始使用更復雜的數據(如包含自定義類的數組),則此方法變得不那麼簡單。來自.NET背景我習慣於將一個類標記爲可序列化,並且能夠快速地序列化和反序列化一個類。

例如

public class Movie 
{ 
    public Movie() {} 
    public String Title { get; set; } 
    blah... blah... 
} 

public class MovieList : List<Movie> { } 

public static void Serialize(String path, MovieList movieList) 
{ 
    XmlSerializer serializer = new XmlSerializer(typeof(MovieList)); 

    using (StreamWriter streamWriter = new StreamWriter(path)) 
    { 
     serializer.Serialize(streamWriter, movieList); 
    } 
} 

public static MovieList Deserialize(String path) 
{ 
    XmlSerializer serializer = new XmlSerializer(typeof(MovieList)); 
    using (StreamReader streamReader = new StreamReader(path)) 
    { 
     return (MovieList) serializer.Deserialize(streamReader); 
    } 
} 

我意識到這是XML,但你明白我的意思......無論哪種方式,我只是想知道是否有使用組織完成我的目標就完成了自定義代碼的一種更好的方式.json命名空間?

+0

您有此標籤爲C#,而不是Java。你是用MonoDroid開發的(因此C#是一個相關的標籤),還是用Java開發? – CommonsWare

+0

沒有用Java開發。公平的,可能不應該把它標記爲C#的問題...我現在改變它,或我們歡迎2. –

回答

0

OK,現在我們已經解決語言了... :-)

沒有什麼內置的Android基於JSON序列化。但是,有第三方JSON庫可以執行此操作,例如JacksonGSON。不過,那些依賴註釋的人可能會遇到Android的一些困難。

+0

我試圖用一個名爲xStream或什麼的庫?無論如何,我遇到性能問題,但生病檢查出來。我想我希望爲Android做一些優化,而不是用Java編寫。我知道我要求分配,哈哈。謝謝...... –

+0

@Maxim Gershkovich:「我試過一個叫做xStream的庫嗎?」 - 這是針對XML的,而不是JSON。 「希望爲Android進行優化而不是用Java編寫的東西」 - 我不太確定在這種情況下「針對Android進行了優化」是什麼意思。 – CommonsWare

+0

我說的是我以前的經驗(當時我試圖序列化/反序列化XML--可能很愚蠢),因爲它的速度慢得讓人無法接受。很明顯,我會看看這些庫,並確定它們是否在Android設備上遇到相同的性能問題。 (我的直覺說,他們可能)我的經驗是基於Java的庫並不總是在Android上工作。這是假設Android甚至有運行該庫所需的庫。 –