簡體   English   中英

C# - 如何從 API 返回的 JSON 格式的字符串中只輸出一個特定的項目

[英]C# - How to only output one specific item from JSON-formatted string returned from an API

我目前正在嘗試使用 C# 向我的自定義視覺預測 API 提交圖像。 我是 C# 新手,按照 Microsoft Azure 網站 ( https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/use-prediction)上提供的教程,我遇到了一些問題-api#next-steps )。

本教程以程序使用以下代碼返回 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM