首先創建下面的數據類:
[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不使用數組而是使用對象,所以不可能將它們作爲列表返回或支持任意數量的條目。
你的意思是反序列化?你有什麼嘗試?你發佈的只是Json。 – WiredPrairie
有沒有任何機會可以稍微改變JSON的格式(使用數組而不是數字作爲鍵)?如果是這樣,它會使它更容易解析這個使用datacontract,但目前這種格式變得棘手,沒有像JSON.NET第三方庫。 – dotMorten