【问题标题】:How to get a JSON response as an array of objects in asp.net? [duplicate]如何在 asp.net 中将 JSON 响应作为对象数组获取? [复制]
【发布时间】:2019-04-23 19:10:41
【问题描述】:

我正在制作一个报告卡系统,我想知道如何获得一个 JSON 响应,该响应由作为对象数组而不是单个对象的种子数据组成。到目前为止,我使用了一种 IDictionary 方法,但它只给了我一个对象,例如SubjectMark = { Math:76 },我如何获取所有种子数据而不是一个实例,例如:

Report = [{
       Subject:Maths
       Mark: 76
       },
       {
       Subject:IT
       Mark: 90
       },]

至少

SubjectMark = [{ Math:76 },{ IT:90 }]

我是初学者,如果我应该添加更多上下文,请告诉我,谢谢。

【问题讨论】:

  • 你可以得到解决方案convert json to array
  • @DarjiSonali 这不是一个好的链接。 JavaScriptSerializer 已过时。 Web API 已经使用 Json.NET
  • 为什么要问这个问题? JSON 是 Web API 的默认序列化格式。如果返回一个对象数组,它将被序列化为一个 JSON 数组。如果您的操作接受对象数组作为参数,则有效负载中的相应元素将自动反序列化。您的代码是什么样的?为什么首先要使用字典?
  • @PanagiotisKanavos 您说建议的答案是错误的,例如“是的,Json.Net 是您需要的”,但您建议使用 JSON.Net...,这有点令人困惑。 OP 实际上根本不需要任何手动序列化,但这不是他们所要求的)。
  • @AlexeiLevenkov 为什么?我没有说Json.Net is what you need。我说JavaScriptSerializer is obsolete 并且Web API 已经使用JSON.NET。这使得这个问题不清楚 - OP 所要做的就是返回所需的对象,不需要额外的序列化

标签: c# asp.net asp.net-web-api


【解决方案1】:

您需要将 Json 对象反串化为 collection

public class ReportCard
    {
        public string Subject
        {
            get;
            set;
        }
        public int Mark
        {
            get;
            set;
        }
    }
  List<ReportCard> ReportCard = JsonConvert.DeserializeObject<List<ReportCard>> 
  (json);

【讨论】:

    【解决方案2】:

    使用这个

    var response = await client.PostAsync(**your_api_url**, formContent);
    
    response.EnsureSuccessStatusCode();
    
    json = await response.Content.ReadAsStringAsync();
    var data = JsonConvert.DeserializeObject<**your_object_class**>(json);
    

    YOUR_OBJECT_CLASS:使用这个http://json2csharp.com/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-18
      • 2021-05-10
      • 1970-01-01
      • 2015-02-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2019-02-24
      相关资源
      最近更新 更多