2012-03-12 54 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