Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在不反序列化/序列化类的情况下解析/编码JSON_C#_.net_Json_Jettison - Fatal编程技术网

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

C# 在不反序列化/序列化类的情况下解析/编码JSON,c#,.net,json,jettison,C#,.net,Json,Jettison,我正在寻找一个用于.NET的JSON解析器和编码器,它可以将JSON解析到自己的数据结构中,然后我就可以进行导航,而不是直接将其反序列化到类中。在Java中,我使用的是非常容易使用的 我不想(反)序列化的原因有很多: 序列化程序倾向于向JSON添加元数据,并要求该元数据进行反序列化(例如fastJSON和JSON.NET添加类型信息) 我不想为了处理所有不同类型的数据而不得不创建一堆类。此外,我希望能够忽略我不感兴趣的字段,而不是向它们添加属性 有什么可用的吗?或者我必须移植抛弃的一个子集吗?您

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

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

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

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

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

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

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

    谢谢,应该可以了
    JSonConvert.DeserializeObject(json)
    相当于抛弃中的
    new JSONObject(json)
    。但他说,在不进行反序列化的情况下???@KansaiRobot这个问题解释了为什么反序列化会出现问题。这种方法没有这些问题,即使您正在调用的方法的名称中有“反序列化”。
    object objectOrArray = JsonConvert.DeserializeObject(json);