У меня есть C# класс, который выглядит какКак связать заданное свойство при десериализации объекта JSON в C# Web Api?
public class Node {
public int Id { get; set; }
/** Properties omitted for sake of brevity **/
public Node ParentNode { get; set; }
}
Из браузера, я представил объект JSON следующим
{"Id":1, "ParentNode":1}
Если значение 1 присваивается свойству ParentNode representes идентификатор базы данных. Итак, для того, чтобы правильно привязать к моей модели, я должен написать собственный JSON преобразователь
public class NodeJsonConverter : JsonConverter
{
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.Null)
{
return null;
}
/** Load JSON from stream **/
JObject jObject = JObject.Load(reader);
Node node = new Node();
/** Populate object properties **/
serializer.Populate(jObject.CreateReader(), node);
return node;
}
}
Потому что я получаю "Текущий JsonReader пункт не является объектом:. Integer Path ParentNode", как можно адаптировать Метод ReadJson для привязки свойства ParentNode или чего-либо еще, для которого требуется индивидуальное преобразование?
UPDATE
Я видел JsonPropertyAttribute чьи API документации говорится
Инструктирует JsonSerializer всегда сериализовать элемент с указанным именем
Однако, как я могу поручить программно JsonSerializer - в моем случае, в методе ReadJson - использовать данный Jso nPropertyAttribute?
http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonPropertyAttribute.htm
1) вам нужно сериализовать, или только десериализации ли? 2) Предполагая, что вы прочитали идентификатор родительского узла, как вы можете заставить родительский узел установить его в дочернем? – dbc