我已经坚持了一段时间,我似乎无法弄明白。感谢任何帮助!
这是我的模特:http://www.jsoneditoronline.org/?id=9ee3466c40627f33c284e63544c8b8a7
我有正确的C#对象设置如下:
public class Media
{
public string name { get; set; }
public string title { get; set; }
public string album { get; set; }
public string artist { get; set; }
public string length { get; set; }
public int bitrate { get; set; }
public double size { get; set; }
public string start_time { get; set; }
public string mimetype { get; set; }
public string hash { get; set; }
}
public class Playlist
{
public string name { get; set; }
public List<Media> media { get; set; }
public List<Graphics> graphics { get; set; }
public bool shuffle { get; set; }
public int volume { get; set; }
public string start_time { get; set; }
public string end_time { get; set; }
}
public class Day
{
public string name { get; set; }
public List<Playlist> playlists { get; set; }
}
public class Schedule
{
public List<Day> days { get; set; }
public string hash { get; set; }
}
我需要直接从MVC Controller POST
这个整个JSON对象。在其他情况下,我想PUT
时间表。我该如何正确处理这个问题?例子可以提供帮助。
谢谢!
我已经为POST
执行了以下操作:
var schedule = JsonConvert.DeserializeObject<Schedule>(model.ToString());
这是按预期工作的,但是,有时相关的Media
对象已存在于数据库中,并且在尝试INSERT
相同的Media
对象时已经导致内部服务器错误存在) - [Key]
的{{1}}是Media
属性。
答案 0 :(得分:4)
您需要序列化Day类。
使用Newtonsoft.json nuget包需要将其序列化为对象。它会自动将复杂对象序列化为json
List<Day> days = // list of days result
var jsonData= JsonConvert.SerializeObject(days);
return json(jsonData);
<强>更新强>
根据您的更新,序列化和反序列化功能正常运行。在Media中插入记录时遇到问题。 哈希不是唯一的。和哈希碰撞是可能的。您需要改进哈希生成代码以使用哈希相同。 有用的链接来理解哈希
答案 1 :(得分:1)
您可以使用扩展方法 AddOrUpdate
using System.Data.Entity.Migrations;
db.Schedule.AddOrUpdate(schedule)