我有以下代码:
using (System.IO.StreamReader r = new System.IO.StreamReader(path))
{
var json = r.ReadToEnd();
dynamic jsonData = JsonConvert.DeserializeObject<dynamic>(json);
foreach (var item in jsonData)
{
var value = item.Student.code;
if (storedValue == Studentcode)
{
return true;
}
}
}
由于安全性已扫描此代码并且认为它不安全,因此我想使用动态方法。
答案 0 :(得分:1)
当必须反序列化JSON时,请使用动态方法代替:
1-如果您知道json仅满足其学生对象:
Student jsonData = JsonConvert.DeserializeObject<Student>(json);
2-如果您不知道JSON中唯一的内容是对象学生本身,但是您知道它不嵌套在另一个对象中,则可以将字符串整体反序列化,然后选择要检索的对象:
var parsedObject = JObject.Parse(jsonString);
var studentObject= parsedObject["Student"].ToString();
var responseData = JsonConvert.DeserializeObject<Student>(studentObject);
编辑:如果嵌套了,您可以像遍历数组示例一样遍历对象:
parsedObject["NestedInThisObject"]["Student"].ToString();
答案 1 :(得分:0)
如果您知道JSON的结构,则可以创建DTO并反序列化为该类型,而不是动态类型,然后将DTO用于对动态类型执行的相同操作。