序列化复杂JSON字符串的最佳方式

本文关键字:最佳 方式 字符串 复杂 JSON 序列化 | 更新日期: 2023-09-27 17:54:07

我正在努力与JSON字符串。它包含有关led及其颜色的信息。在结构化类对象中序列化这个字符串的最快方法是什么?

{" layer1 ": {"左":{" 0 ": {"r":11日"g":10"b":10}," 1 ": {"r":13日"g":13日"b":12}," 2 ": {"r":28日,"g":25日"b":21}},"顶级":{" 0 ": {33岁的"r":"g":30,"b":26}," 1 ": {"r":42岁37岁的"g":"b":32}," 2 ": {"r":34岁"g":30,"b":26}," 3 ": {"r":14日"g":13日"b":12}}}}

首选的结果将是一个SideClass(左,或顶部等)与一个列表。对于每一个Led, R, G, B int

我希望有人能帮助我!

亲切的问候,尼尔斯·

序列化复杂JSON字符串的最佳方式

首先创建以下数据类:

[DataContract]
public class MyObject
{
    [DataMember]
    public Layer layer1 { get; set; }
}
[DataContract]
public class Layer
{
    [DataMember]
    public Side left { get; set; }
    [DataMember]
    public Side top { get; set; }
}
[DataContract]
public class Side
{
    [DataMember(Name="0")]
    public Color _0 { get; set; }
    [DataMember(Name = "1")]
    public Color _1 { get; set; }
    [DataMember(Name = "2")]
    public Color _2 { get; set; }
    [DataMember(Name = "3")]
    public Color _3 { get; set; }
}
[DataContract]
public class Color
{
    [DataMember]
    public byte r { get; set; }
    [DataMember]
    public byte g { get; set; }
    [DataMember]
    public byte b { get; set; }
}

接下来使用DataContractJsonSerializer来反序列化json:

DataContractJsonSerializer s = new DataContractJsonSerializer(typeof(MyObject));
var instance = s.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(json)));

请注意,如果您有更多的面或层,JSON不会使这变得容易。因为JSON不使用数组,而是使用对象,所以不可能将它们作为列表返回,也不可能支持任意数量的条目。