创建词典<;字符串,列表<;字符串>;或者类似于c#中json对象列表中的内容
本文关键字:列表 字符串 lt json 对象 gt 创建 或者 类似于 | 更新日期: 2023-09-27 18:25:42
嘿,你怎么能把json-obects变成字典之类的东西?
这是我的json主体:
{
"name": "person1",
"listOne": [{
"name": "list1",
"description": "",
"listTwo": [{
"name": "object1"
}, {
"name": "object2"
}, {
"name": "object3"
}]
}, {
"name": "list2",
"description": "",
"listTwo": [{
"name": "object1"
}, {
"name": "object2"
}]
}]
}
这是类:
public class JsonObject()
{
public string Name { get; set;}
public string Description { get; set;}
public List<string> MyList { get; set; }
}
public class MyList()
{
public string Name { get; set; }
}
问题是我无法从MyList中选择Name属性!在我的xaml页面上,我看到了App1.Model.MyList.
如何显示MyList类中Name属性的值?
在我的ViewModel中,这是我返回到xamlpage的列表:
private ObservableCollection<JsonObject> _ObjectList = new ObservableCollection<JsonObject>();
public ObservableCollection<JsonObject> ObjectList
{
get
{
return _ObjectList;
}
set
{
_ObjectList = value;
RaisePropertyChanged("ObjectList");
}
}
所以我想也许可以创建一个disctionary并将thise值添加到其中,但我无法从MyList类中获取属性Name。。。。
您可以使用http://json2csharp.com为任何JSON生成C#类结构。
在这种情况下,它将是这样的:
public class ListTwo
{
public string name { get; set; }
}
public class ListOne
{
public string name { get; set; }
public string description { get; set; }
public List<ListTwo> listTwo { get; set; }
}
public class RootObject
{
public string name { get; set; }
public List<ListOne> listOne { get; set; }
}
如果更改属性的大小写/名称,则必须添加一个具有JSON模型中使用的相应名称的DataContractAttribute。当然,如果需要的话,这取决于您的序列化程序。
为什么不反序列化为相同的c#类型-
public class ListTwo
{
public string name { get; set; }
}
public class ListOne
{
public string name { get; set; }
public string description { get; set; }
public List<ListTwo> listTwo { get; set; }
}
public class RootObject
{
public string name { get; set; }
public List<ListOne> listOne { get; set; }
}
并将其反序列化-
var typed = JsonConvert.DeserializeObject<RootObject>(json);