如何绑定动态属性
本文关键字:动态 属性 绑定 何绑定 | 更新日期: 2023-09-27 18:12:16
我正在解析一些包含Json对象的Json数据
- "0": "some data",
- "1": "其他数据"。
转换为c#类后,代码转换为:
public class Data
{
public List<Items> photos { get; set; }
}
public class Items
{
public string __invalid_name__3 { get; set; }
public string __invalid_name__0 { get; set; }
public string __invalid_name__2 { get; set; }
}
此数据不能正确反序列化。我已经尝试了Jsoncovert以及数据合约反序列化器。
所以我取
List<Items> as List<dynamic>.
但问题是键名仍然为"0","1",这将无法绑定到我的xaml UI端。
是否有办法将这个动态数据绑定到UI?
使用DataContractJsonSerializer,你可以在你的DataMemberAttributes上设置Name属性,以序列化与c#中属性名称不同的对象:
[DataContract]
public class Data
{
[DataMember]
public List<Items> photos { get; set; }
}
[DataContract]
public class Items
{
[DataMember(Name = "3")]
public string Three { get; set; }
[DataMember(Name="0")]
public string Zero { get; set; }
[DataMember(Name = "2")]
public string Two { get; set; }
}
public static void TestJson()
{
var json = "{'"photos'":[{'"0'":'"some data'",'"2'":'"other data'",'"3'":'"another data'"}]}";
var serializer = new DataContractJsonSerializer(typeof(Data));
Data data = serializer.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(json))) as Data;
}
试试这个解析:
var jsonSerializer = new JavaScriptSerializer();
var jsonString = /*your json string*/
var yourList = jsonSerializer.Deserialize<List<YourClass>>(jsonString);
public class YourClass
{
[JsonProperty(PropertyName = "0")]
public string Zero { get; set; }
[JsonProperty(PropertyName = "1")]
public string One { get; set; }
}