在 Azure Function 中处理从查询到 Azure IOT 中心的 JSON 响应
Processing JSON response in Azure Function from query to Azure IOT Hub
我是 C# 的新手,无法将查询处理成所需的格式。如果我 运行 这样的代码响应是:
["{\r\n \"Plant\": \"1195118\"\r\n}","{\r\n \"Plant\": \"1195157\"\r\n}"]
这不是您想要的结果。实际所需的输出是以下格式的 JSON:
{
"plant":["123235", "1195157"]
}
我使用的代码如下。我已经尝试了几种选择,但我正在为 JSON.
的 C# 处理而苦苦挣扎
如有任何帮助,我们将不胜感激。谢谢
string queryString = "SELECT properties.reported.Plant_Number FROM devices WHERE properties.reported.Plant_Number != null";
IQuery query = registryManager.CreateQuery(queryString);
var json = (await query.GetNextAsJsonAsync());
return (ActionResult)new OkObjectResult(json);
你想要的JSON是一个单一的对象,而你得到的JSON是一个数组,其中一个条目是一个字符串。简而言之:您需要解析 JSON.
var json = (await query.GetNextAsJsonAsync());
return (ActionResult)new OkObjectResult(json);
第一行returns一个可枚举的字符串,第二行returns它给调用者。这就是为什么您得到的结果是一个包含字符串的数组。
如果您希望它改为 returns JSON,您将需要解析该字符串。为此,您可以使用 NewtonSoft.Json 库中的 JsonConvert class(默认情况下随您的函数一起提供)。您可以了解 here.
在作者评论后编辑:
var jsonStrings = await query.GetNextAsJsonAsync();
var deviceProperties = jsonStrings.Select(JsonConvert.DeserializeObject<DeviceProperty>);
return (ActionResult)new OkObjectResult(deviceProperties);
public class DeviceProperty
{
public string Plant { get; set; }
}
我是 C# 的新手,无法将查询处理成所需的格式。如果我 运行 这样的代码响应是:
["{\r\n \"Plant\": \"1195118\"\r\n}","{\r\n \"Plant\": \"1195157\"\r\n}"]
这不是您想要的结果。实际所需的输出是以下格式的 JSON:
{
"plant":["123235", "1195157"]
}
我使用的代码如下。我已经尝试了几种选择,但我正在为 JSON.
的 C# 处理而苦苦挣扎如有任何帮助,我们将不胜感激。谢谢
string queryString = "SELECT properties.reported.Plant_Number FROM devices WHERE properties.reported.Plant_Number != null";
IQuery query = registryManager.CreateQuery(queryString);
var json = (await query.GetNextAsJsonAsync());
return (ActionResult)new OkObjectResult(json);
你想要的JSON是一个单一的对象,而你得到的JSON是一个数组,其中一个条目是一个字符串。简而言之:您需要解析 JSON.
var json = (await query.GetNextAsJsonAsync());
return (ActionResult)new OkObjectResult(json);
第一行returns一个可枚举的字符串,第二行returns它给调用者。这就是为什么您得到的结果是一个包含字符串的数组。
如果您希望它改为 returns JSON,您将需要解析该字符串。为此,您可以使用 NewtonSoft.Json 库中的 JsonConvert class(默认情况下随您的函数一起提供)。您可以了解 here.
在作者评论后编辑:
var jsonStrings = await query.GetNextAsJsonAsync();
var deviceProperties = jsonStrings.Select(JsonConvert.DeserializeObject<DeviceProperty>);
return (ActionResult)new OkObjectResult(deviceProperties);
public class DeviceProperty
{
public string Plant { get; set; }
}