Веб-API ASP.NET 2 вложенные в JSON
Я застрял с этим на некоторое время, и я не могу понять это. Ценю любую помощь!
это моя модель: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; }
}
мне нужно POST
весь этот объект JSON непосредственно из контроллера MVC. В других случаях я хотел бы PUT
расписание. Как я могу с этим справиться? Образцы действительно может помочь.
спасибо!
Я уже делаю ниже POST
:
var schedule = JsonConvert.DeserializeObject<Schedule>(model.ToString());
это работает, как ожидалось, однако, иногда связанные Media
объекты уже существуют в базе данных и это вызывает внутреннюю ошибку сервера при попытке INSERT
тот же
2 ответов
вам нужно сериализовать класс день.
используя Newtonsoft.пакет JSON nuget необходимо сериализовать как объект. Он автоматически сериализует сложный объект в json
List<Day> days = // list of days result
var jsonData= JsonConvert.SerializeObject(days);
return json(jsonData);
обновление
согласно вашему обновлению функции сериализации и десериализации работают правильно. При вставке записей в носитель возникает проблема. Хэш не уникален. и хэш-столкновение возможно. Вам нужно улучшить код генерации хэша, чтобы использовать хэш как идентичный. Полезные ссылки для понимания хэша
вы можете использовать метод расширения AddOrUpdate
using System.Data.Entity.Migrations;
db.Schedule.AddOrUpdate(schedule)