gpt4 book ai didi

c# - 在 Azure Function 中处理从查询到 Azure IOT Hub 的 JSON 响应

转载 作者:行者123 更新时间:2023-12-03 04:08:46 24 4
gpt4 key购买 nike

我是 C# 新手,无法将查询处理为所需的格式。如果我以这种方式运行代码,响应是:

["{\r\n  \"Plant\": \"1195118\"\r\n}","{\r\n  \"Plant\": \"1195157\"\r\n}"]

这不是想要的结果。实际所需的输出是以下格式的 JSON:

{
"plant":["123235", "1195157"]
}

我正在使用的代码如下。我尝试了多种选择,但我在 C# 处理 JSON 方面遇到了困难。

如有任何帮助,我们将不胜感激。谢谢。

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);

第一行返回一个可枚举的字符串,第二行将其返回给调用者。这就是为什么您得到的结果是一个带有字符串的数组。

如果您希望它返回 JSON,则需要解析该字符串。为此,您可以使用 NewtonSoft.Json 库中的 JsonConvert 类(默认情况下与您的 Function 一起提供)。您可以了解一下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# - 在 Azure Function 中处理从查询到 Azure IOT Hub 的 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58058897/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com