C#-如何从API返回的JSON格式字符串中仅输出一个特定项



我目前正在尝试使用C#向我的自定义视觉预测API提交图像。我是C#的新手,在Microsoft Azure网站上提供的教程之后,我遇到了一些问题(https://learn.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/use-prediction-api#next-步骤(。

本教程结束时,程序使用以下代码返回JSON格式的字符串:

byte[] byteData = GetImageAsByteArray(imageFilePath);
using (var content = new ByteArrayContent(byteData))
{
content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
response = await client.PostAsync(url, content);
Console.WriteLine(await response.Content.ReadAsStringAsync());
}

输出示例为:

{
"Id": "7796df8e-acbc-45fc-90b4-1b0c81b73639",
"Project": "8622c779-471c-4b6e-842c-67a11deffd7b",
"Iteration": "59ec199d-f3fb-443a-b708-4bca79e1b7f7",
"Created": "2019-03-20T16:47:31.322Z",
"Predictions": [
{
"TagId": "d9cb3fa5-1ff3-4e98-8d47-2ef42d7fb373",
"TagName": "cat",
"Probability": 1
},
{
"TagId": "9a8d63fb-b6ed-4462-bcff-77ff72084d99",
"TagName": "dog",
"Probability": 0.1087869
}
]
}

是否可以更改代码,使其只返回数组的预测部分?我知道会有一个解决方案,但正如我之前提到的,我对C#非常陌生,以前从未使用过JSON,我也没有在网上找到任何帮助解决我问题的东西,但如果有人已经使用了,请告诉我!

我希望你能帮我解决这个问题!

谢谢,

您展示的这个示例只是客户端。理想情况下,您需要调整服务器代码以只输出您需要的内容,因为这也更高效。

但如果您不能做到这一点,那么幸运的是,JSON转换器往往会忽略它们不需要的任何数据。因此,您可以反序列化为一个简化的类。

因此,根据需要定义您的类。例如

public class Prediction
{
public string TagId { get; set; }
public string TagName { get; set; }
public double Probability { get; set; }
}
public class RootObject
{
public List<Prediction> Predictions { get; set; }
}

然后进行相应的反序列化。例如使用Newtonsoft

RootObject rootObj = JsonConvert.DeserializeObject<RootObject>(json);

相关内容

  • 没有找到相关文章

最新更新