我正在努力使用JSON字符串..它包含有关LED及其颜色的信息。在结构化类对象中序列化此字符串的最快方法是什么?
{ " layer1":{ "离开":{ " 0":{ " r":11, " g":10, " b":10 }, " 1":{ " r":13, " g":13, " b":12 }, " 2":{ " r":28, " g":25, " b":21 } }, " top":{ " 0":{ " r":33, " g":30, " b":26 }, " 1":{ " r":42, " g":37, " b":32 }, " 2":{ " r":34, " g":30, " b":26 }, " 3":{ " r":14, " g":13, " b":12 } } } }
首选结果是带有List的SideClass(左侧或顶部等)以及每个Led的R,G和B int。
我希望有人可以帮助我!
亲切的问候, 尼尔斯
答案 0 :(得分:1)
首先创建以下数据类:
[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不使用数组而是对象,所以不可能将它们作为列表返回或支持任意数量的条目。