2012-03-12 108 views
1

我正在寻找一个JSON解析器和编码器,它可以将JSON解析为自己的数据结构,然后我可以导航,而不是直接将其反序列化到类中。在Java中,我使用了JettisonJSONObjectJSONArray,这很容易使用。解析/编码JSON而无需反序列化/序列化类

有许多的原因,我不想(反)序列:

  1. 串行器往往会添加元数据到JSON和需要反序列化的元数据(如FASTJSON和JSON.NET添加类型信息)。
  2. 我不想为创建一堆类来处理所有不同类型的数据而烦恼。另外,我希望能够忽略我不感兴趣的字段,而不是必须向它们添加属性。

有什么可用或我必须移植Jettison的子集?

回答

0

你指出的系列化的缺点是不是真的存在,至少在JSON.NET的情况下:

  1. JSON.NET默认情况下不添加任何元数据。您可以告诉它在需要时添加元数据(例如,当一个属性可以保存不同类型的值),但它是可选的。
  2. 除了你用替换字符串和强制转换的麻烦之外,我认为它更糟。此外,您可以忽略不感兴趣的字段,只是不要将它们添加到您的类型中。

但是,如果你真的想这样做,你可以。等效类型是JObjectJArray,所以,如果你想反序列化某个对象,只需使用:

JObject obj = JsonConvert.DeserializeObject<JObject>(json); 

作为另一个选项,您不必指定要在所有的类型,蚂蚁就会返回JObjectJArray

object objectOrArray = JsonConvert.DeserializeObject(json); 
+0

谢谢,那应该这样做。 'JSonConvert.DeserializeObject (json)'相当于Jettison中的'new JSONObject(json)'。 – 2012-03-12 14:17:50