C# 如何从JSON属性中删除特定字符?

C# 如何从JSON属性中删除特定字符?,c#,json,C#,Json,有一个json stringresponse,我需要用C#反序列化它。 问题是,其中一个json属性称为“contentHash”,其值可能如下所示:“contentHash”:“HY$RF>L@O-;G,2-&F7$TD#EH4\S)M[0L'DOHS\“`H'9我想您调用API是为了获得json负载。我不知道您是否控制该API,但下面的内容在任何情况下都是正确的 当你调用一个API时,你基本上是在与一个你已经同意一些约定的远程资源进行通信。API声明向你发送一个具有特定形状的json响应这一

有一个json stringresponse,我需要用C#反序列化它。
问题是,其中一个json属性称为“contentHash”,其值可能如下所示:“contentHash”:“HY$RF>L@O-;G,2-&F7$TD#EH4\S)M[0L'DOHS\“`H'9我想您调用API是为了获得json负载。我不知道您是否控制该API,但下面的内容在任何情况下都是正确的

当你调用一个API时,你基本上是在与一个你已经同意一些约定的远程资源进行通信。API声明向你发送一个具有特定形状的json响应这一事实是你(API使用者)之间协议的一部分这意味着,如果API作者记录了他能够向您发送具有特定形状的json负载,那么您需要信任他,并假设他会在您调用API时向您发送此类响应

当您编写代码来使用API时,请记住发送一个
Accept
请求头,其值为
application/json
(当API能够以不同格式(例如json和xml)提供响应,并且支持所调用的内容时,这非常有用)

当您收到响应时,请检查
内容类型
响应标题,并检查响应媒体类型是否为
应用程序/json
。如果不是,则需要找到处理此类意外情况的方法。例如,您可以决定引发异常,因为您面临意外情况,很可能,在您的应用程序域中没有一个业务规则来处理它(您希望得到json,例如xml。您能做些什么呢?可能没有什么比抛出异常更好的了,因为您面临的场景完全出乎意料)

让我们假设您得到一个
应用程序/json
响应内容。然后,您可以对其进行反序列化,以便在应用程序中使用它。不要手动执行此操作。有几个库可以执行此操作;在.NET空间中,一个被广泛采用的库是。让库对从API获得的json进行反序列化。如果如果您得到的字符串不是有效的json,那么库可能会抛出一个异常:这是正确的做法,同样,对于响应内容类型的推理与上面所示的相同

如果API返回一个无效的json字符串,为了使其成为有效的json,您自己的代码需要修复它。这意味着API作者试图欺骗您,他没有遵守我在回答开始时引用的协议。您应该让他知道他有一个bug,因为他是not发送有效的json,他应该修复它。这可能表明他没有使用适当的库将其对象序列化为json

如果您需要验证字符串以检查它是否是有效的json,请使用类似的在线服务


长话短说:修复响应内容以使其成为有效的json不是打算使用API的代码的问题。这是API作者的问题。
JsonIgnore
属性?首先,需要修复序列化程序。如果不可能,则哈希很可能具有固定的length,因此您可以尝试覆盖反序列化并手动解析它。您所说的
contentHas value有一个“看起来像valuestring结尾的字符”
。这里有一个
DOHS之后
但是它是正确的,所以无论你是否反序列化它都不会引起任何问题。也许,正如Robert所建议的那样,反序列化程序存在一些问题?应该正确处理。啊,我明白了。我刚刚发现它们都被转义了。所以这可能根本不是我的问题。谢谢你的帮助!