使用JSON.net将JSON反序列化为c#中的对象



我正在尝试将json转换为规则对象。我一直在遵循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,我可以在我的终端中输出它。我不确定如何将json中的每个字段分配给我的规则对象。看看newtonsoft文档,这应该可以工作,但我没有得到任何输出。

我想能够打印出这些字段,有人知道吗?

提前干杯。

在JSON字符串中,根对象是具有Rules属性的对象。该属性是一个对象数组。您需要定义并反序列化根对象,例如

class Rules 
{
public Rule[] Rules{get;set;}
}
var rules = JsonConvert.DeserializeObject<Rules>(Json);

通过复制JSON字符串并在"编辑"菜单中选择"将JSON粘贴为类",可以在Visual Studio中生成反序列化所需的DTO。您还可以使用像json2csharp 这样的在线转换器生成类

相关内容

  • 没有找到相关文章

最新更新