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

本文关键字:编码 JSON 情况下 反序列化 序列化 | 更新日期: 2023-09-27 18:27:23

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

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

  1. 序列化程序倾向于向JSON添加元数据,并要求该元数据进行反序列化(例如fastJSON和JSON.NET添加类型信息)
  2. 我不想创建一堆类来处理所有不同类型的数据。此外,我希望能够忽略我不感兴趣的字段,而不是向它们添加属性

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

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

您指出的序列化的缺点并没有真正存在,至少在JSON.NET:的情况下是这样

  1. 默认情况下,JSON.NET不添加任何元数据。如果需要,您可以告诉它添加元数据(例如,当一个属性可以包含不同类型的值时),但这是可选的
  2. 你用处理字符串和类型转换的麻烦来代替创建类的麻烦,我认为这会更糟。此外,您可以忽略不感兴趣的字段,只是不要将它们添加到您的类型中

但是,如果你真的想这么做,你可以。等效的类型是JObjectJArray,因此,如果要反序列化某个对象,请使用:

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

作为另一个选项,您根本不必指定所需的类型,它将返回JObjectJArray:

object objectOrArray = JsonConvert.DeserializeObject(json);