[英]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.