从couchbase视图将JSON对象解析为模型列表

时间:2017-03-27 18:16:56

标签: c# .net couchbase couchbase-view

我正在尝试在像so这样的couchbase中创建mapreduce视图。现在我在couchbase服务器中的视图代码如下所示,

function(doc, meta)
{
  emit(doc.content,null);
}

我发出文件的内容。

所以当我在(var rows in result.Rows)中进行迭代时,我希望将内容中的每个值(以JSON格式)分配给模型(abc)的列表,该模型具有serialNumber的get / set,{ {1}},以及

中的uldNumber

row.key值有

assignedDate

我的班级看起来像

{{
  "serialNumber": "1",
  "uldNumber": "33",
  "assignedDate": "2033-02-17T09:10:38"
}}

如果我尝试将其反序列化,

 public class abc
    {
        //[JsonProperty("serialNumber")]
        public string SerialNumber { get; set; }

        //[JsonProperty("uldNumber")]
        public string UldNumber { get; set; }

        //[JsonProperty("assignedDate")]
        public DateTime AssignedDate { get; set; }
    }

我得到 JsonSerializer js = new JsonSerializer(); _abcList.Add(js.Deserialize<dynamic[]>(row));

如果我要执行此操作"cannot convert from 'Couchbase.Views.ViewRow<dynamic>' to 'Newtonsoft.Json.JsonReader",我会收到row.Key.toString();的异常错误

“无法将couchbase.views.viewrow转换为字符串”

我查看了thisthis,但这些都没有效果。

1 个答案:

答案 0 :(得分:0)

当您执行这样的emit语句时:

emit(doc.content, null);

您只是将视图键设为doc.content,并将行数据保留为null。你可以试试这个:

emit(doc.content, doc);

这将使行内容成为文档中的完整数据。或者,您可以使用row.Id获取文档ID并使用Read(row.Id)来读取文档。这个速度较慢,但​​视图使用的存储空间较少。

此外,您通常不会在密钥中放置JSON对象映射。通常它可以是单个值,如数字或字符串,也可以是值数组。数组更易于用于视图查找。