Azure C#, фильтрация необработанных данных, хранящихся в космической БД (отображается через URL функции) - PullRequest
0 голосов
/ 01 мая 2020

У меня есть JSON данные (температура, влажность, свет), которые хранятся в космической БД и отображаются в виде необработанных данных в URL функции, я могу вернуть все данные без фильтрации. Как бы я мог отфильтровать эти данные, чтобы показать только конкретные данные c, такие как температура, я новичок в azure, и я не знаю, с чего начать.

#r "Newtonsoft.Json"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;

public static async Task<IActionResult> Run(HttpRequest req, IEnumerable<dynamic> inputDocument, ILogger log)
{
    var result = new OkObjectResult(inputDocument);
    return result;
}

Я пытался сохранить результат в JSON объекте, но когда я его возвращаю, в URL функции нет данных.

Данные, которые я пытаюсь отфильтровать:

[
  {
    "myIoTHubMessage": "{\"temperature\":34.123939224110885,\"humidity\":64.35605799050818,\"light\":21.041931184493905,\"decibel\":14.208070081289891}"
  }
]

1 Ответ

0 голосов
/ 01 мая 2020

На основании этого комментария:

Я хотел бы вернуть подмножество данных, предоставленных функции, поэтому, скажем, я храню температуру, влажность и свет, я хотел бы отфильтровать влажность и свет поэтому он отображает температуру только при возврате

Это может быть так же просто, как возвращение Анонимного типа .

Анонимные типы обеспечивают удобный способ инкапсуляции набор свойств, доступных только для чтения, в один объект без необходимости предварительно явно определять тип. Имя типа генерируется компилятором и недоступно на уровне исходного кода. Тип каждого свойства определяется компилятором.

В вашем конкретном случае c (псевдокод):

public static async Task<IActionResult> Run(HttpRequest req, IEnumerable<dynamic> inputDocuments, ILogger log)
{
    return new OkObjectResult(inputDocuments.Select(document => new 
    {
        Temperature = document.Temperature
    }));
}

Кстати: если вы знаете тип поступающих документов, вы можете явно ввести их вместо использования dynamic.

РЕДАКТИРОВАТЬ:
Как я указал, я опубликовал некоторые псевдокод , чтобы дать вам общее представление о том, как это может работать. - это некоторая работа, связанная с тем, чтобы заставить его работать для вашего конкретного c сценария. Например: основываясь на вопросе, который вы разместили, мы не имели представления о структуре вашего сообщения.

Я проверил, этот код работает:

dynamic dyn = JsonConvert.DeserializeObject("{ \"myIoTHubMessage\": {\"temperature\":34.123939224110885,\"humidity\":64.35605799050818,\"light\":21.041931184493905,\"decibel\":14.208070081289891 } }");
var x = new { Temperature = dyn.myIoTHubMessage.temperature };

The value of x

Теперь вам решать, как это работает в вашем сценарии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...