在不反序列化/序列化类的情况下解析/编码JSON

时间:2012-03-12 06:37:29

标签: c# .net json jettison

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

我不想(de)序列化的原因有很多:

  1. 序列化程序倾向于向JSON添加元数据,并要求使用元数据进行反序列化(例如fastJSON和JSON.NET添加类型信息)。
  2. 我不想让必须创建一堆类来处理所有不同类型的数据。此外,我希望能够忽略我不感兴趣的字段,而不必为它们添加属性。
  3. 是否有可用的东西或者我必须移植Jettison的子集?

1 个答案:

答案 0 :(得分:0)

你指出的序列化的缺点并不存在,至少在JSON.NET的情况下是这样的:

  1. 默认情况下,JSON.NET不会添加任何元数据。如果需要,您可以告诉它添加元数据(例如,当一个属性可以包含不同类型的值时),但它是可选的。
  2. 你可以用编写字符串和强制转换的麻烦来替换创建类的麻烦,我认为这更糟糕。此外,您可以忽略您不感兴趣的字段,只是不要将它们添加到您的类型中。
  3. 但是,如果你真的想这样做,你可以。等效类型为JObjectJArray,因此,如果要反序列化某些对象,请使用:

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

    作为另一种选择,您不必指定所需的类型,它将返回JObjectJArray

    object objectOrArray = JsonConvert.DeserializeObject(json);