【问题标题】:How to Deserialise JSON object and get a value in C#?如何反序列化 JSON 对象并在 C# 中获取值?
【发布时间】:2018-11-06 11:31:19
【问题描述】:

我有这个 JSON 响应

{
  "multicast_id": 6847210640445644406,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [{
      "message_id": "0:1540898546437583%dadf2158f9fd7ecd"
  }]
}

现在如何获取 message_id 的值??

我以这种方式设计了类以进行反序列化

public class SingleResponse
{
    public string Multicast_id { get; set; }
    public byte Success { get; set; }
    public byte Failure { get; set; }
    public ICollection<Result> Results { get; set; }

}

public class Result
{
    public string Message_id { get; set; }
}

我的程序正确吗? 如果是,如何获取 MessageId 的值?

到目前为止,我已经尝试过反序列化并且效果很好

 SingleResponse singleResponse = JsonConvert.DeserializeObject<SingleResponse>(response);

并且能够以这种方式获得其他属性

byte success = singleResponse.success

【问题讨论】:

  • 这是哪种编程语言?我猜是 C#,但你实际上并没有这么说或标记它。你是如何进行反序列化的?您的类结构看起来不错,您在获取消息 ID 时究竟面临什么问题?你试过什么?
  • 我使用的是c#编程语言
  • 好的。请编辑您的问题以包含我在上面要求的信息。谢谢。

标签: c# .net json icollection


【解决方案1】:

您可以遍历结果列表并打印每个结果的消息 ID,例如

foreach(Result res in singleResponse.Results)
{
    Console.WriteLine(res.Message_id);
}

演示:https://dotnetfiddle.net/eVg1pQ

here 是关于ICollection 接口的更多信息。

【讨论】:

  • 非常感谢 我可以使用 for 循环吗?如果是.. 怎么样?
  • 实际上我不需要一次迭代所有项目。
  • 如果您只想获取单个项目,您可以使用 Linq,请参阅 stackoverflow.com/questions/363326/icollection-get-single-value 。您不能真正有意义地使用for 循环,因为您不能直接通过索引访问ICollection 中的项目。但是您为什么要关心它是for 还是foreach?这不是很重要,确定吗?
  • 当然,也没有什么可以阻止您在 C# 类中使用不同的东西,例如 IList,甚至是像 List 这样的具体类(而不是 ICollection)
  • linq 参考非常棒。我可以使用 lamda 表达式吗??
猜你喜欢
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多