MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Globalnie używaj JsonConverter w klasie bez atrybutu

Tak, możesz użyć niestandardowego IContractResolver aby programowo zastosować JsonConverter do klasy lub właściwości. Najprostszym sposobem, aby to zrobić, jest wyprowadzenie swojego resolvera z DefaultContractResolver klasy, a następnie nadpisać odpowiednią metodę. Poniżej znajduje się przykładowy program rozpoznawania nazw, który instruuje Json.Net, aby używał ObjectIdConverter we wszystkich wystąpieniach ObjectId typ, niezależnie od klasy, w której mogą się pojawić.

class CustomResolver : DefaultContractResolver
{
    protected override JsonObjectContract CreateObjectContract(Type objectType)
    {
        JsonObjectContract contract = base.CreateObjectContract(objectType);
        if (objectType == typeof(ObjectId))
        {
            contract.Converter = new ObjectIdConverter();
        }
        return contract;
    }
}

Aby użyć przelicznika, możesz skonstruować JsonSerializer instancję i ustaw ContractResolver na nim właściwość, a następnie użyj tego wystąpienia do wykonania serializacji/deserializacji. Jeśli używasz JObject.ToObject() i JObject.FromObject() , zwróć uwagę, że obie metody mają przeciążenia, które akceptują JsonSerializer przykład.

JsonSerializer serializer = new JsonSerializer();
serializer.ContractResolver = new CustomResolver();

JObject jo = JObject.FromObject(foo, serializer);

Alternatywnie, jeśli używasz JsonConvert do wykonania serializacji/deserializacji, możesz utworzyć instancję JsonSerializerSettings , ustaw ContractResolver tej właściwości, a następnie przekaż ustawienia do SerializeObject() i DeserializeObject() metody.

JsonSerializerSettings settings = new JsonSerializerSettings();
settings.ContractResolver = new CustomResolver();

Foo foo = JsonConvert.DeserializeObject<Foo>(json, settings);

Mam nadzieję, że to pomoże.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB nie działa. BŁĄD:ścieżka db (/data/db) nie istnieje.

  2. Jak wyszukiwać różne wartości w Mongoose?

  3. Mongoose limit/przesunięcie i zapytanie zliczania

  4. Jak zapisać plik w MongoDB?

  5. MongoDB $setDifference