c# – Couchbase N1QL结果根据SELECT语法改变形状
我是Couchbase的新手,我遇到了一个让我困扰的行为.假设我已经在C#中定义了这个类:
public class Thing { public string Property1 { get; set; } public string Property2 { get; set; } } 我把它存放在一个名为ThingBucket的桶中的Couchbase中.现在,如果我进入Couchbase Query Workbench并输入: SELECT Property1,Property2 FROM ThingBucket 我得到的是一个JSON对象,它将直接反序列化为Thing数组: [ { "Property1": "Value","Property2": "Value" } ] 这很好,因为我不需要做任何特殊的事情就可以将它反序列化为Thing. Couchbase C#驱动程序调用Json.NET进行反序列化,它只是起作用. 但是,如果我输入: SELECT * FROM ThingBucket 我没有获得一系列的东西.我完全得到了别的东西: [ { "ThingBucket": { "Property1": "Value","Property2": "Value" } } ] 现在,我有一个形状数组,而不是我的C#代码中存在的形状数组,而不是Thing数组.它是一个对象数组,其中每个对象都有一个Thing属性.为了让它反序列化为Thing,我必须使用[JsonProperty]属性覆盖Thing,这似乎是多余的,有点难看: public class Thing { [JsonProperty("Property1")] public string Property1 { get; set; } [JsonProperty("Property2")] public string Property2 { get; set; } } 这是示例在CouchbaseNetClient的文档中的样子,所以看起来这种行为是预期的. 是否有一种优雅的方法使它返回原始形状而不列出SELECT语句中的每个属性?此外,我的新手眼睛没有看到这种行为有什么价值吗? 解决方法
RAW关键字可能就是您要查找的内容.
SELECT c FROM customer c得到你: [ { "c": { "Property1": "Value","Property2": "Value" } } ] SELECT RAW c FROM customer c得到你: [ { "Property1": "Value","Property2": "Value" } ] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |