JSON 형식에 JSON .NET을 사용하는 WebAPI를 사용하고 있습니다. 는 C# 측면에서 나는이처럼 보이는 DTO 있습니다역 직렬화시 JSON .NET 차단 속성 이름
public class DTO1 : IManifestContainer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public HashSet<string> Manifest { get; private set; }
}
public interface IManifestContainer
{
HashSet<string> Manifest { get; }
}
IManifestContainer 인터페이스의 아이디어는 클라이언트가 실제로 JSON 객체의 서버로 전송하는 특성을 추적하는 것입니다. 예를 들어, 클라이언트가 JSON을 보내는 경우 :
{"FirstName":"Jojo"}
Manifest 해시 세트에는 "성"만 포함됩니다. 클라이언트가 보내는 경우 :
{"FirstName":"Jojo", "LastName":"Jones"}
매니페스트 HashSet의는 "FIRSTNAME"과 "성"을 모두 포함됩니다.
나는이 같은 JsonConverter을 구현하는 시도 :
public class ManifestJsonConverter : JsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
{
return null;
}
JObject jObject = JObject.Load(reader);
// Convert the JObject to a C# object??
// Passing the serializer will call this method again
object retVal = jObject.ToObject(objectType, serializer);
IManifestContainer manifestContainer = (IManifestContainer) retVal;
foreach (var jProperty in jObject.Properties())
{
manifestContainer.Manifest.Add(jProperty.Name);
}
return retVal;
}
public override bool CanConvert(Type objectType)
{
return typeof (IManifestContainer).IsAssignableFrom(objectType);
}
}
내가 클라이언트에서 오는 모든 속성을 얻기 위해하는 jobject를로드해야하지만 그때 objectType의 "의 인스턴스를 생성하는 방법을 모른다 "(C# DTO) JObject에서.
전체 그래프를 비 직렬화하는 동안 보존해야하는 다른 설정이 포함되어 있기 때문에 동일한 직렬기를 유지해야합니다. – oscarmorasu