我在menu.json文件中保存了以下JSON:
{
"menu": {
"menuitems": [
{
"label": "Account",
"listview": "Account List"
},
{
"label": "Documents",
"listview": "Document List"
}
]
}
}
我已手动将此数据写入文件。我使用以下函数检索此数据:
public ActionResult GetFromFile(string path)// path points to the menu.json file
{
StreamReader sr = new StreamReader(path);
string filedata = sr.ReadToEnd();
Menu menu = JsonSerializer.DeserializeToString<Menu>(filedata);
return Json(menu, JsonRequestBehavior.Allowget);
}
当我将响应作为菜单时,我无法在类字段中将其分开。而且,我有一个类,所以如何将我的json文件数据存储到这个类?课程结构会有任何修改吗?我的菜单类如下:
public class Menu
{
public string Label {get;set;}
public string Listview {get;set;}
}
答案 0 :(得分:1)
序列化在菜单上方有一个额外的,未命名的容器。您的类结构需要如下所示:
public class container
{
public menu menu { get; set; }
}
public class menu
{
public menuitem[] menuitems { get; set; }
}
public class menuitem
{
public string Label { get; set; }
public string Listview { get; set; }
}
要反序列化,您可以使用:
JavaScriptSerializer js = new JavaScriptSerializer();
StreamReader sr = new StreamReader("menu.json");
string filedata = sr.ReadToEnd();
var menus = js.Deserialize<container>(filedata);
答案 1 :(得分:0)
我认为您需要将Menu类重命名为MenuItem:
public class MenuItem
{
public string Label { get; set; }
public string Listview { get; set; }
}
创建一个新的Menu类,其中包含MenuItems列表:
public class Menu
{
public List<MenuItem> MenuItems { get; set; }
}
看看是否有效。
答案 2 :(得分:0)
这里有一些序列化的例子http://james.newtonking.com/pages/json-net.aspx使用JSON.Net
答案 3 :(得分:0)
您的班级结构应与以下内容类似
public class Menu
{
public List<MenuItem> menuItems {get;set;}
}
public class MenuItem
{
public string Label {get;set;}
public string Listview {get;set;}
}