Deserialisieren von YAML-Schlüsseln mit Bindestrichen in das Klassenobjekt C#C#

Ein Treffpunkt für C#-Programmierer
Guest
 Deserialisieren von YAML-Schlüsseln mit Bindestrichen in das Klassenobjekt C#

Post by Guest »

Ich habe die folgende Yaml-Struktur;

Code: Select all

cosmetics:
cosmeticname:
type: item

price-lore:
- ""
- "&8> &7Price: &a%price%"
- ""
- "&8> &7Click to purchase this cosmetic."
aber ein paar weitere verschiedene Schlüssel.
Wenn ich versuche, dies in die folgende Klasse zu deserialisieren:

Code: Select all

    public class CosmeticList
{
[JsonProperty("cosmetics")]
public Dictionary Cosmetics { get; set; }

public void LoadFromFile()
{
if (!File.Exists(@"cosmetics.yml"))
{
throw new FileNotFoundException("Cosmetics file not found!");
}

var reader = new StreamReader(@"cosmetics.yml");
string ymlstring = reader.ReadToEnd();
var yaml = new YamlStream();
yaml.Load(new StringReader(ymlstring));
var root = (YamlMappingNode)yaml.Documents[0].RootNode;

if (!root.Children.TryGetValue(new YamlScalarNode("cosmetics"), out var cosmeticsNode))
{
throw new Exception("Missing 'cosmetics' section in YAML file.");
}

var serializer = new SerializerBuilder()
.WithNamingConvention(UnderscoredNamingConvention.Instance)
.Build();
var deserializer = new DeserializerBuilder()
.WithNamingConvention(UnderscoredNamingConvention.Instance)
.IgnoreUnmatchedProperties()
.Build();

var cosmeticsYaml = serializer.Serialize(cosmeticsNode);

Cosmetics = deserializer.Deserialize(cosmeticsYaml);
}
}

public class Cosmetic
{
[JsonProperty("type")]
public string Type { get; set; }

[JsonProperty("price-lore")]
public string[] PriceLore { get; set; }
}

Es funktioniert für alle Yaml-Schlüssel, außer denen mit einem Bindestrich – im Schlüsselnamen. Ich habe einige Dinge versucht, wie das Hinzufügen der .WithNamingConvention, aber das Problem besteht weiterhin.
Weiß jemand, wie ich das beheben kann? Ich würde es vorziehen, die Yaml-Struktur dafür nicht zu ändern.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post