MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Gunakan JsonConverter secara global di kelas tanpa atribut

Ya, Anda dapat menggunakan IContractResolver khusus untuk menerapkan JsonConverter . secara terprogram ke kelas atau properti. Cara termudah untuk melakukannya adalah dengan mendapatkan resolver Anda dari DefaultContractResolver kelas dan kemudian menimpa metode yang sesuai. Di bawah ini adalah contoh resolver yang menginstruksikan Json.Net untuk menggunakan ObjectIdConverter pada semua contoh ObjectId ketik, terlepas dari kelas apa mereka akan muncul.

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

Untuk menggunakan resolver, Anda dapat membuat JsonSerializer instance dan atur ContractResolver properti di atasnya, lalu gunakan instance itu untuk melakukan serialisasi/deserialisasi. Jika Anda menggunakan JObject.ToObject() dan JObject.FromObject() , perhatikan bahwa kedua metode memiliki kelebihan yang menerima JsonSerializer contoh.

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

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

Atau, jika Anda menggunakan JsonConvert class untuk melakukan serialisasi/deserialisasi, Anda dapat membuat instance JsonSerializerSettings , atur ContractResolver properti itu, lalu berikan pengaturan ke SerializeObject() dan DeserializeObject() metode.

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

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

Semoga membantu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Skema luwak:'unik' tidak dihormati

  2. MongoDB $cmp

  3. 10 Tips untuk Meningkatkan Keamanan MongoDB Anda

  4. 3 Cara Mengonversi Tanggal menjadi String di MongoDB

  5. Bagaimana cara mengatasi masalah terkait mongoDB secara efisien?