Newtonsoft.JSON忽略[Required]属性

时间:2017-06-19 21:36:52

标签: c# json.net

我有一个字段,它是一对多关系中许多方面的外键(例如Order - > LineItem)。我希望实体框架将该字段标记为非空,并在删除,级联"上添加"关系,所以我用[Required]属性装饰它。但是,我不希望Newtonsoft.JSON序列化或反序列化字段,因此我使用[JsonIgnore]属性进行装饰。但是,[Required]属性似乎胜过[JsonIgnore],因为我收到错误声明该字段是必需的。我有什么方法可以做到这一点吗?

public class LineItem
{
    [JsonIgnore]
    [Required]
    public int OrderId { get; set; }
}

1 个答案:

答案 0 :(得分:1)

我必须将此作为答案,但以下代码有效:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            LineItem item = new LineItem
            {
                OrderId = 10
            };


            string json = JsonConvert.SerializeObject(item, Formatting.Indented);
            var t = JsonConvert.DeserializeObject<LineItem>(json);
        }
        public class LineItem
        {
            [JsonIgnore]
            [Required]
            public int OrderId { get; set; }
        }
    }
}