簡體   English   中英

ASP.NET WebAPI 2嵌套JSON

[英]ASP.NET WebAPI 2 Nested 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; }
}

我需要直接從MVC控制器POST整個JSON對象。 在其他場合,我想PUT時間表。 我該如何正確處理這個問題? 實例可能真的有幫助。

謝謝!

我已經在POST下面做了以下事情:

var schedule = JsonConvert.DeserializeObject<Schedule>(model.ToString());

這是按預期工作的,但是,有時相關的Media對象已經存在於數據庫中,並且在嘗試INSERT同一個Media對象(已經存在)時導致內部服務器錯誤 - Media[Key]hash屬性。

您需要序列化Day類。

使用Newtonsoft.json nuget包你需要將它序列化為對象。 它會自動將復雜對象序列化為json

List<Day> days = // list of days result
var jsonData= JsonConvert.SerializeObject(days);
return json(jsonData);

更新

根據您的更新序列化和反序列化功能正常工作。 在Media中插入記錄時遇到問題。 哈希不是唯一的。 和哈希碰撞是可能的。 您需要改進哈希生成代碼以使用哈希相同。 有用的鏈接來理解哈希

您可以使用擴展方法AddOrUpdate

using System.Data.Entity.Migrations;

db.Schedule.AddOrUpdate(schedule)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM