在MVC中反序列化未命名对象
本文关键字:未命名 对象 反序列化 MVC | 更新日期: 2023-09-27 18:05:12
我有以下被认为有效的JSON:
{
"folderList": [
[
{
"folderPath": "/Test",
"userList": [
{
"userName": "Test User",
"accessType": "Read Only",
"startDate": "2.May.2014",
"endDate": "3.May.2014"
}
]
}
]
]
}
问题是,你可以看到,文件夹列表包含一个数组,没有名字,所以我无法让它在MVC中正确反序列化。它正在提取当前项目的数量(在本例中为1),但所有值最终都为空。
任何想法?
它是一个包含列表的列表(或者是一个包含数组的数组,如果你喜欢的话)。
// Users that got access to a specific folder item
public class User
{
public string userName {get; set; }
public string accessType{get; set; }
public string startDate {get; set; }
public string endDate {get; set; }
}
// Inner object
public class FolderListItem
{
public string folderPath { get; set; }
public User[] userList { get; set; }
}
// See? List of Lists
public class RootObject
{
public List<List<FolderListItem>> folderList { get; set; }
}
// Need to have a root object as the folder list is named.
public ActionResult SomeMethod(RootObject data)
{
}
看看这个答案。
https://stackoverflow.com/a/3806407/992021我过去使用过它,并且能够解决我无法控制所接收的JSON有效负载的问题。
否则,实现这一目标的方法之一是通过使用JSON反序列化器的解决方案。当您只需要JSON有效负载中的值,而不能或不想创建要反序列化到的实际对象时,这非常有用。JSON.netdynamic jsonObject = JsonConvert.DeserializeObject("{ 'Name': 'Jon Smith', 'Address': { 'City': 'New York', 'State': 'NY' }, 'Age': 42 }");
string name = jsonObject.Name;
string address = jsonObject.Address.City;
也使用Newtonsoft.Json.Linq:
dynamic jsonObject = JObject.Parse("{ 'Name': 'Jon Smith', 'Address': { 'City': 'New York', 'State': 'NY' }, 'Age': 42 }");
string name = jsonObject.Name;
string address = jsonObject.Address.City;
你必须创建像
这样的类public class Folder
{
public string folderPath{get;set;}
public List<USER> userList{get;set;}
}
public class USER
{
public string userName{get;set;}
public string accessType{get;set;}
public string startDate{get;set;}
public string endDate{get;set;}
}