mam C# klasy, która wygląda jakJak powiązać daną właściwość przy deserializacji obiektu JSON w C# Web Api?
public class Node {
public int Id { get; set; }
/** Properties omitted for sake of brevity **/
public Node ParentNode { get; set; }
}
Od przeglądarce, złożyłam obiekt JSON następująco
{"Id":1, "ParentNode":1}
Jeżeli wartość 1 przypisana do właściwości parentNode representes identyfikator bazy danych. Tak więc, w celu prawidłowego związania do mojego modelu, muszę napisać niestandardowej Converter 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;
}
}
bo dostać „pozycja Aktualny JsonReader nie jest obiektem. Integer Ścieżka parentNode '”, w jaki sposób można dostosować Metoda ReadJson w celu powiązania właściwości ParentNode lub czegokolwiek, co wymaga niestandardowej konwersji?
UPDATE
Widziałem JsonPropertyAttribute którego dokumentację API stwierdza
Nakazuje JsonSerializer zawsze serializacji elementu o podanej nazwie
Jednak, jak mogę polecić programowo a JsonSerializer - w moim przypadku, w metodzie ReadJson - użycie danego Jso nPropertyAttribute?
http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_JsonPropertyAttribute.htm
1) Czy trzeba serializacji lub tylko deserializowania? 2) Zakładając, że odczytałeś identyfikator węzła nadrzędnego, w jaki sposób można uzyskać węzeł nadrzędny, aby ustawić go w podrzędnym? – dbc