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