簡體   English   中英

將Yaml反序列化為C#集合

[英]Deserialize Yaml into c# collection

我具有以下yaml結構:

TestPaySignService:
    Test:
        TestString:
            settings-key: TestStringValue
            types:
                - type1
                - type2

        TestString2:
            settings-key: TestStringValue2
            types:
                - type1
                - type2

我想解析此Yaml,並將“ settings-key”和“ types”一起存儲在c#集合中,例如List,如下所示:

[
  {
     name: TestStringValue,
     types: ["type1", "type2"]
  },
  {
     name: TestStringValue2,
     types: ["type1", "type2"]
  }
]

我已經遵循了follwin問題並嘗試了接受的答案的代碼,但是目前看來它已經過時了: 反序列化數據的YAML“表”

PS我的Yaml模式每次都會更改,但是始終包含“設置鍵”和“類型”,因此我想創建類似“動態解析器​​”的內容

您可以將Yaml反序列化為動態對象,然后再走一點。 類似於以下內容:

在線嘗試!

public static void Main()
{
    var r = new StringReader(@"TestPaySignService:
Test:
    TestString:
        settings-key: TestStringValue
        types:
            - type1
            - type2

    TestString2:
        settings-key: TestStringValue2
        types:
            - type1
            - type2"); 
    var deserializer = new Deserializer();
    var yamlObject = deserializer.Deserialize<dynamic>(r)["TestPaySignService"]["Test"].Values;

    // just to print the json
    var serializer = new JsonSerializer();
    serializer.Serialize(Console.Out, yamlObject);
}

輸出量

[{
    "settings-key": "TestStringValue",
    "types": [
        "type1",
        "type2"
    ]
},
{
    "settings-key": "TestStringValue2",
    "types": [
        "type1",
        "type2"
    ]
}]

如果需要使用TestString,則應將其反序列化為對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM