[英]Deserializes JSON to an object in c# using json.net
我正在嘗試將我的 json 轉換為規則 object。 我一直在關注 Newtonsoft http://www.newtonsoft.com/json/help/html/deserializeobject.htm的本指南。
public class Rule{
public string Field { get; set; }
public string Test { get; set; }
public Rule[] Cases { get; set; }
}
public class Rules {
public List<Rule> Root{ get; set; }
}
我的 Json 來自 rules.js
{
"Rules": [{
"Field": "Subject",
"Test": "^(Azure Exception)",
"Cases": [{
"Field": "Content",
"Test": "Hostname: az.....(?<Hostname>[^\n])",
"Cases": [{
"Field": "Content",
"Test": "Hostname:\\s+(?<Hostname>.*)\\s+Site name:\\s+(?<SiteName>.*)"
}]
}]
}]
}
在我的主要方法中:
String RulesFile = "cSharp/rules.js";
String Json = System.IO.File.ReadAllText(RulesFile);
Rule rule = JsonConvert.DeserializeObject<Rule>(Json);
var rules = JsonConvert.DeserializeObject<Rules>(Json);
//rule.Cases
//rule.Field
//rule.Test
//rules.Root
Console.Write(rule.Field);
我已經測試了我的 json 並且我可以在我的終端中使用 output 它。 我不確定如何將 json 中的每個字段分配給我的規則對象。 查看 newtonsoft 文檔,這應該可以,但我沒有得到任何 output。
我希望能夠將這些字段打印出來,有人知道嗎?
提前祝大家好運。
在您的 JSON 字符串中,根 object 是具有Rules
屬性的 object。 該屬性是一個對象數組。 您需要定義和反序列化根 object,例如
class Rules
{
public Rule[] Rules{get;set;}
}
var rules = JsonConvert.DeserializeObject<Rules>(Json);
您可以通過在編輯菜單中復制 JSON 字符串和 select 將 JSON 粘貼為類來生成 Visual Studio 中反序列化所需的 DTO。 您還可以使用json2csharp等在線轉換器生成類
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.