【问题标题】:Convert JSON string to .net object [duplicate]将 JSON 字符串转换为 .net 对象 [重复]
【发布时间】:2018-04-12 06:59:47
【问题描述】:
   string sample = "{\"warnings\":[{\"code\":3,\"message\":\"Invalid number\"}],\"errors\":[{\"code\":4,\"message\":\"No recipients specified\"}],\"status\":\"failure\"}";

    JavaScriptSerializer js = new JavaScriptSerializer();
    List<Status> liststatus = (List<Status>)js.Deserialize(sample, typeof(List<Status>));
    string success = "";
    foreach (Status status in liststatus)
    {
         success = status.code;
    }

Response.Write("成功");

公开课状态 {

public string status { get; set; }
    public string[] warnings { get; set; }
    public string balance { get; set; }
    public string message { get; set; }
    public string recipient { get; set; }
    public string content { get; set; }

    public string num_messages { get; set; }

    public string num_parts { get; set; }

}

我试图将 json 对象转换为 c#,但我没有。我的代码有什么问题???

【问题讨论】:

  • 那么发生了什么?我们知道它没有按照您的意愿行事,但我们不知道它正在在做什么。你能提供一个minimal reproducible example吗? (我怀疑这与 ASP.NET 本身有什么关系,所以一个简单的控制台应用程序将是展示它的最佳方式。)
  • JavaScriptSerializer 来自哪个 nuget。通常的选择是 NewtonSoft Json Serializer 或内置的 DataContractJsonSerializer
  • 您能否在帖子中提供Status 课程代码?
  • 那个类远不及它所需要的。使用here 给出的说明生成正确的代码。

标签: c# asp.net json


【解决方案1】:

您的 JSON 字符串不是一个列表,它是一个具有警告(列表)属性的对象,

创建一个与之匹配的模型

 JavaScriptSerializer js = new JavaScriptSerializer();
    Status x = (Status)js.Deserialize(sample, typeof(Status);

【讨论】:

    【解决方案2】:

    显然,status.code 不是 json 中的任何 code 属性。

    应该是status.warnings[0].codestatus.errors[0].code

    【讨论】:

      猜你喜欢
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 2012-07-05
      • 2016-10-05
      • 1970-01-01
      相关资源
      最近更新 更多