嘿,你怎么能把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中,这是我的List,我将返回xamlpage:
private ObservableCollection<JsonObject> _ObjectList = new ObservableCollection<JsonObject>();
public ObservableCollection<JsonObject> ObjectList
{
get
{
return _ObjectList;
}
set
{
_ObjectList = value;
RaisePropertyChanged("ObjectList");
}
}
所以我想也许可以创建一个功能并添加这个值,但是我无法从MyList类到达属性Name ....
答案 0 :(得分:0)
您可以使用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; }
}
如果更改属性的大小写/名称,则必须添加DataContractAttribute,其中包含JSON模型中使用的更正名称。当然,如果您需要,它取决于您的序列化器。
答案 1 :(得分:0)
为什么不反序列化为相同的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);