繁体   English   中英

使用 ZEE9B16F39BC3629FB97E10A12A7B004 将 JSON 反序列化为 c# 中的 object

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

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