繁体   English   中英

使用JSON处理动态关键字的最佳方法?

[英]Best way to handle dynamic keyword with JSON?

我有以下代码:

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;
                }
            }
        }

我想解决使用动态的问题,因为我的安全性扫描了此代码,但认为它不安全。

建议您在必须反序列化JSON时使用动态方法,而不是使用以下方法之一:

1-如果您知道json仅满足其Student对象:

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();

如果您知道JSON的结构,则可以创建DTO并反序列化为该类型而不是动态类型,然后将DTO用于对动态类型执行的相同操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM