安全地只反序列化我需要的东西
本文关键字:反序列化 安全 | 更新日期: 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数据将被忽略