簡體   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