Веб-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)