Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从n1ql查询遍历JSON数组?_C#_.net_Json_Parsing_Couchbase - Fatal编程技术网

C# 如何从n1ql查询遍历JSON数组?

C# 如何从n1ql查询遍历JSON数组?,c#,.net,json,parsing,couchbase,C#,.net,Json,Parsing,Couchbase,所以我使用couchbase队列将我的信标信息排入队列。我正在尝试使用n1ql查询作为我的get方法,但在获取所有信息时遇到了问题。我意识到我只得到第一个信标条目,因为result.Rows返回一个元素,一个BeaconInfo 1ql数组。我想遍历该数组并将每个数组添加到列表中 try { var cluster = new Cluster(new ClientConfiguration()); using (var bucket = cluster.OpenBucket(

所以我使用couchbase队列将我的信标信息排入队列。我正在尝试使用n1ql查询作为我的get方法,但在获取所有信息时遇到了问题。我意识到我只得到第一个信标条目,因为result.Rows返回一个元素,一个BeaconInfo 1ql数组。我想遍历该数组并将每个数组添加到列表中

try {
     var cluster = new Cluster(new ClientConfiguration());
     using (var bucket = cluster.OpenBucket("BeaconInfoN1ql"))
     {
         string query = "SELECT * FROM `BeaconInfoN1ql`";
         var queryRequest = new QueryRequest(query);
         var result = bucket.Query<dynamic>(queryRequest);
     foreach (var row in result.Rows)
      {

          int i = 0;
          var beacon = new Beacon()
          {
              SerialNumber = row.BeaconInfoN1ql[i].serialNumber,
              ReceivedDate = Convert.ToDateTime(row.BeaconInfoN1ql[i].receivedDate),
              ReceiverId = row.BeaconInfoN1ql[i].receiverId,
              Distance = Convert.ToDouble(row.BeaconInfoN1ql[i].distance),
              Rssi = Convert.ToInt32(row.BeaconInfoN1ql[i].rssi),
              NewDistance = Convert.ToDouble(row.BeaconInfoN1ql[i].newDistance),
              DistanceTesting = Convert.ToDouble(row.BeaconInfoN1ql[i].distanceTesting),
          };
          i++;
          _beaconsList.Add(beacon);
      }
 }
 return _beaconsList;

我不确定如何使第二个foreach/for循环遍历所有键

对于迭代JSON,我喜欢使用动力学。下面是一个例子:

var result = new Result()
{
    Rows = @"{
        'BeaconInfoN1ql': [
            {
                 'distance': 2.2705747109792007,
                 'distanceTesting': 22,
                 'newDistance': 22,
                 'receivedDate': '0001-01-01T00:00:00',
                 'receiverId': '42008780c4b9b329',
                 'rssi': -73,
                 'serialNumber': '888'
            }
        ]
    }" //other entries omitted for brevity
};

dynamic parsedRows = JsonConvert.DeserializeObject(result.Rows);
foreach (var entry in parsedRows.BeaconInfoN1ql)
    Debug.Write(entry.distance);

注意:在我的示例中,我从您的输出中去掉了双大括号。

我尝试过,我无法反序列化result.Rows,它将System.Collections.Generic.List赋予字符串。我认为其中一个原因可能是因为json有两个括号“{{”而不是一个?我不能使用split(),因为result是iQueryResult,而它没有split函数。
var result = new Result()
{
    Rows = @"{
        'BeaconInfoN1ql': [
            {
                 'distance': 2.2705747109792007,
                 'distanceTesting': 22,
                 'newDistance': 22,
                 'receivedDate': '0001-01-01T00:00:00',
                 'receiverId': '42008780c4b9b329',
                 'rssi': -73,
                 'serialNumber': '888'
            }
        ]
    }" //other entries omitted for brevity
};

dynamic parsedRows = JsonConvert.DeserializeObject(result.Rows);
foreach (var entry in parsedRows.BeaconInfoN1ql)
    Debug.Write(entry.distance);