MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

В световен мащаб използвайте JsonConverter за клас без атрибута

Да, можете да използвате персонализиран IContractResolver за програмно прилагане на JsonConverter към клас или собственост. Най-простият начин да направите това е да извлечете вашия резолвер от DefaultContractResolver клас и след това отменете подходящия метод. По-долу е даден примерен преобразувател, който инструктира Json.Net да използва ObjectIdConverter на всички екземпляри на ObjectId тип, независимо в какъв клас може да се появят.

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

За да използвате резолвера, можете да създадете JsonSerializer екземпляр и задайте ContractResolver свойство върху него, след което използвайте този екземпляр, за да извършите своята сериализация/десериализация. Ако използвате JObject.ToObject() и JObject.FromObject() , имайте предвид, че и двата метода имат претоварвания, които приемат JsonSerializer пример.

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

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

Като алтернатива, ако използвате JsonConvert клас, за да извършите своята сериализация/десериализация, можете да създадете екземпляр на JsonSerializerSettings , задайте ContractResolver свойство на това, след което предайте настройките на SerializeObject() и DeserializeObject() методи.

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

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

Надявам се това да помогне.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Премахване на дубликат в MongoDB

  2. MongoDB 3 Java проверява дали съществува колекция

  3. Проблеми с MongoDB PHP UTF-8

  4. MongoDB – Индексът не се използва при сортиране и ограничаване на заявка с обхват

  5. Актуализацията на Mongoose не се актуализира:{ ok:0, n:0, nModified:0 }