Couchbase-将json反序列化为动态类型

Couchbase-将json反序列化为动态类型,json,deserialization,couchbase,Json,Deserialization,Couchbase,我试图将一些从couchbase返回的JSON反序列化为动态类型。 该文档是这样的,因此为其创建POCO将是过分的: { UsersOnline: 1 } 我认为这样做可以达到目的,但它似乎反序列化为一个动态对象,其值仅为原始JSON var jsonObj = _client.GetJson<dynamic>(storageKey); 我是否可以让couchbase反序列化程序为我生成动态类型 Cheers客户端的默认反序列化程序使用.NET的二进制序列化程序,因此当您

我试图将一些从couchbase返回的JSON反序列化为动态类型。 该文档是这样的,因此为其创建POCO将是过分的:

{
    UsersOnline: 1
}
我认为这样做可以达到目的,但它似乎反序列化为一个动态对象,其值仅为原始JSON

var jsonObj = _client.GetJson<dynamic>(storageKey);
我是否可以让couchbase反序列化程序为我生成动态类型


Cheers

客户端的默认反序列化程序使用.NET的二进制序列化程序,因此当您保存或读取JSON字符串时,它只是一个字符串。GetJson总是只返回一个字符串。但是,有两种选择:

您可以将JSON记录转换为字典实例:

var appJson = "{ \"UsersOnline\" : 1, \"NewestMember\" : \"zblock\" }";
var result = client.ExecuteStore(StoreMode.Set, "userCount", appJson);
var item = client.GetJson<Dictionary<string, object>>("userCount");
Console.WriteLine("There are {0} users online.  The newest member is {1}.",
                    item["UsersOnline"], item["NewestMember"]);
var-appJson=“{\'UsersOnline\”:1,\'NewestMember\:\'zblock\”;
var result=client.ExecuteStore(StoreMode.Set,“userCount”,appJson);
var item=client.GetJson(“userCount”);
WriteLine(“有{0}个用户在线。最新成员是{1}”,
项目[“UsersOnline”]、项目[“newest成员”];
或者您可以使用动态ExpandoObject实例:

var appJson = "{ \"UsersOnline\" : 1, \"NewestMember\" : \"zblock\" }";
var result = client.ExecuteStore(StoreMode.Set, "userCount", appJson);
dynamic item = client.GetJson<ExpandoObject>("userCount");
Console.WriteLine("There are {0} users online.  The newest member is {1}.",
                    item.UsersOnline, item.NewestMember);
var-appJson=“{\'UsersOnline\”:1,\'NewestMember\:\'zblock\”;
var result=client.ExecuteStore(StoreMode.Set,“userCount”,appJson);
动态项=client.GetJson(“userCount”);
WriteLine(“有{0}个用户在线。最新成员是{1}”,
item.UsersOnline、item.NewestMember);
在这两种情况下,您都会丢失静态类型检查,这对于您的目的来说似乎是正常的。在这两种情况下,您都可以访问JSON属性,而无需将JSON解析为POCO


编辑:我写了一些可能有用的扩展方法,并在

Hi John上写了关于它们的博客,谢谢你的回答-在上面的例子中item变量来自哪里?记录是如何转换成字典的?现在是早上,所以我可能需要我的咖啡才能明白这一点,干杯!我忘了复制和粘贴最重要的行-实际的Get。很抱歉。我已经更新了代码以包含项目分配。ExpandoObject正是我想要的-最终在.cs文件中创建了一个5行POCO,但这些都是很好的替代方案,干杯!很高兴这对您起到了作用-我终于找到了ExpandooObject的一个很好的用例:哇,刚刚看到你的博客文章和扩展方法-真棒:-)
var appJson = "{ \"UsersOnline\" : 1, \"NewestMember\" : \"zblock\" }";
var result = client.ExecuteStore(StoreMode.Set, "userCount", appJson);
dynamic item = client.GetJson<ExpandoObject>("userCount");
Console.WriteLine("There are {0} users online.  The newest member is {1}.",
                    item.UsersOnline, item.NewestMember);