安全地只反序列化我需要的东西

本文关键字:反序列化 安全 | 更新日期: 2023-09-27 18:13:23

我想知道我的反序列化方法是否会导致任何问题。我一直在从API读取JSON响应到类中以供将来参考,如下所示:

var response = await client.DeleteAsync(resource);
return await response.Content.ReadAsAsync<FolderResult>();

而FolderResult是一个类。

class FolderResult
{
    public string FolderId { get; set; }
    public string message { get; set; }
}

}

我的问题是,有时API返回一组不同的JSON值,例如JSON返回消息,路径,大小和权重,但我仍然将响应转换为FolderResult。当我从结果FolderResult调用message(我唯一想要的值)时,值是正确的。

我的问题是,我这样做会遇到问题吗?或者我可以安全地只解析我需要的内容,而忽略额外的响应值吗?

安全地只反序列化我需要的东西

只要您的message属性保持不变,就不会有问题。虽然如果您只需要message字符串,您可以使用JObject.SelectToken

检索它
var jsonString = await response.Content.ReadAsStringAsync();
var jObject = JObject.Parse(jsonString);
var message = (string)jObject.SelectToken("message");

您应该可以让类保持原样。它会成功的。当返回的json中没有消息时,FolderResult中的消息字符串被设置为空。api返回的有效负载中的所有其他json数据将被忽略