using System;
using System.Collections.Generic;
using Newtonsoft.Json;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using Newtonsoft.Json.Serialization;
using System.Linq;
using System.Reflection;
public interface IParent
{
[JsonProperty]
int Id {get;set;}
}
[JsonObject(MemberSerialization.OptIn)]
public class Parent : IParent
{
public int Id { get;set; }
public string Name {get;set;}
}
public class Serializer
{
public static void Main()
{
var parent = new Parent() { Id = 1, Name ="Parent"};
var sb = new StringBuilder();
var sw = new StringWriter(sb);
var settings = new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore
};
var output = JsonConvert.SerializeObject(parent, Formatting.None, settings);
Console.WriteLine(output);
Console.ReadKey();
}
}
В приведенном выше коде вывод {}. Можно ли сериализовать и получить вывод как {"Id":1}?
[JsonProperty]
в объявлениях свойств интерфейса реализована с Json.NET 4.0.3, так что теперь этот код просто работает, см. dotnetfiddle.net/bEIWEF. Таким образом, теперь это дубликат Получение SerializeObject для использования «имени» JsonProperty, определенного внутри интерфейса. - person dbc   schedule 04.04.2019