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

时间:2014-07-16 17:12:37

标签: c# json deserialization

我想知道我的反序列化方法是否会导致任何问题。我一直在将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(我唯一需要的值)时,值是正确的。

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

2 个答案:

答案 0 :(得分:2)

只要您的message财产仍然存在,就不会有问题。虽然如果您只需要message字符串,则可以使用JObject.SelectToken

进行检索
var jsonString = await response.Content.ReadAsStringAsync();

var jObject = JObject.Parse(jsonString);
var message = (string)jObject.SelectToken("message");

答案 1 :(得分:1)

你应该没问题。它会工作。当返回的json中没有消息时,FolderResult中的消息字符串将设置为null。 api返回的有效负载中的所有其他json数据都将被忽略。