我有一个类,我需要以自定义方式在Couchbase中序列化为JSON。所以我做了类似的事情:
var converters = new[] { new CustomConverter() };
var json = JsonConvert.SerializeObject(myObject, jsonConverters.ToArray());
var result = _couchbaseClient.ExecuteStore(StoreMode.Add, id, json);
但是如何使用CustomConverter
再次反序列化?我想检索JSON并自己进行反序列化。我意识到有ExecuteGet
方法,但我想通过视图工作。
这可能吗?
我已经尝试将我的转换器添加到JsonConvert.DefaultSettings
但它似乎没有使用它。我一直在JsonSerializationException
。我猜测Couchbase会重置设置,或者使用自己的设置。
答案 0 :(得分:1)
深入了解Couchbase代码,我发现了它。 Couchbase有一些使用自己设置的扩展方法。您可以看到此on GitHub:
public static class CouchbaseClientExtensions
{
public static JsonSerializerSettings JsonSerializerSettings;
static CouchbaseClientExtensions()
{
JsonSerializerSettings = new JsonSerializerSettings
{
ContractResolver = new DocumentIdContractResolver()
};
}
// ...
private static string SerializeObject(object value)
{
var json = JsonConvert.SerializeObject(value,
Formatting.None,
JsonSerializerSettings);
return json;
}
}
所以你可以像这样添加你自己的转换器:
foreach (var jsonConverter in jsonConverters)
{
if (!CouchbaseClientExtensions
.JsonSerializerSettings
.Converters.Any(x => x.GetType() == jsonConverter.GetType()))
{
CouchbaseClientExtensions
.JsonSerializerSettings
.Converters.Add(jsonConverter);
}
}