我正在解析一些包含Json对象的Json数据
将其转换为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以及DataContract反序列化器。
所以我拿了
List<Items> as List<dynamic>.
但问题是键名仍然是&#34; 0&#34; ,&#34; 1&#34;这无法绑定到我的xaml UI端。
有没有办法将这个动态数据绑定到UI?
答案 0 :(得分:2)
使用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;
}
答案 1 :(得分:-2)
试试这个解析:
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; }
}
这对我有用;]