2011-10-09 80 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甚至有运行该库所需的库。 –