c# - 反序列化json数据c#

标签 c# json telegram-bot

我想反序列化 Telegram Bot API 收到的 JSON 响应通过 getUpdate()方法。

JSON 数据:

{
  "ok": true,
  "result": [
    {
      "update_id": 920493886,
      "message": {
        "message_id": 123,
        "from": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777"
        },
        "chat": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777",
          "type": "private"
        },
        "date": 1472457375,
        "text": "Aata aala"
      }
    },
    {
      "update_id": 920493887,
      "message": {
        "message_id": 124,
        "from": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777"
        },
        "chat": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777",
          "type": "private"
        },
        "date": 1472457387,
        "text": "Jeva tuzyakadun reply aala tevha"
      }
    },
    {
      "update_id": 920493888,
      "message": {
        "message_id": 125,
        "from": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777"
        },
        "chat": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777",
          "type": "private"
        },
        "date": 1472457443,
        "text": "Deposite"
      }
    },
    {
      "update_id": 920493889,
      "message": {
        "message_id": 127,
        "from": {
          "id": 201520743,
          "first_name": "Chandrakant",
          "last_name": "Kumathekar",
          "username": "chandrakant_k"
        },
        "chat": {
          "id": 201520743,
          "first_name": "Chandrakant",
          "last_name": "Kumathekar",
          "username": "chandrakant_k",
          "type": "private"
        },
        "date": 1472457645,
        "text": "\/menu",
        "entities": [
          {
            "type": "bot_command",
            "offset": 0,
            "length": 5
          }
        ]
      }
    },
    {
      "update_id": 920493890,
      "message": {
        "message_id": 128,
        "from": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777"
        },
        "chat": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777",
          "type": "private"
        },
        "date": 1472457670,
        "text": "\/menu",
        "entities": [
          {
            "type": "bot_command",
            "offset": 0,
            "length": 5
          }
        ]
      }
    },
    {
      "update_id": 920493891,
      "message": {
        "message_id": 130,
        "from": {
          "id": 201520743,
          "first_name": "Chandrakant",
          "last_name": "Kumathekar",
          "username": "chandrakant_k"
        },
        "chat": {
          "id": 201520743,
          "first_name": "Chandrakant",
          "last_name": "Kumathekar",
          "username": "chandrakant_k",
          "type": "private"
        },
        "date": 1472457848,
        "text": "Deposite"
      }
    },
    {
      "update_id": 920493892,
      "message": {
        "message_id": 132,
        "from": {
          "id": 201520743,
          "first_name": "Chandrakant",
          "last_name": "Kumathekar",
          "username": "chandrakant_k"
        },
        "chat": {
          "id": 201520743,
          "first_name": "Chandrakant",
          "last_name": "Kumathekar",
          "username": "chandrakant_k",
          "type": "private"
        },
        "date": 1472457883,
        "text": "Deposite"
      }
    },
    {
      "update_id": 920493893,
      "message": {
        "message_id": 133,
        "from": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777"
        },
        "chat": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777",
          "type": "private"
        },
        "date": 1472468407,
        "text": "\/menu",
        "entities": [
          {
            "type": "bot_command",
            "offset": 0,
            "length": 5
          }
        ]
      }
    },
    {
      "update_id": 920493894,
      "message": {
        "message_id": 134,
        "from": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777"
        },
        "chat": {
          "id": 219633031,
          "first_name": "Shreeeeeee",
          "username": "Winner7777",
          "type": "private"
        },
        "date": 1472473070,
        "text": "\/menu",
        "entities": [
          {
            "type": "bot_command",
            "offset": 0,
            "length": 5
          }
        ]
      }
    }
  ]
}

我已经从 json2csharp 生成了类

public class From
{
    public int id { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string username { get; set; }
}

public class Chat
{
    public int id { get; set; }
    public string first_name { get; set; }
    public string last_name { get; set; }
    public string type { get; set; }
    public string username { get; set; }
}

public class Entity
{
    public string type { get; set; }
    public int offset { get; set; }
    public int length { get; set; }
}

public class Message
{
    public int message_id { get; set; }
    public From from { get; set; }
    public Chat chat { get; set; }
    public int date { get; set; }
    public string text { get; set; }
    public List<Entity> entities { get; set; }
}

public class Result
{
    public int update_id { get; set; }
    public Message message { get; set; }
}

public class RootObject
{
    public bool ok { get; set; }
    public List<Result> result { get; set; }
}

使用newtonsoft反序列化

var d = Newtonsoft.Json.JsonConvert.DeserializeObject(rcvd_data);

接下来要做什么?如何让这一切发挥作用?我很困惑,请帮忙。

最佳答案

要反序列化,请使用此代码:

RootObject ro = JsonConvert.DeserializeObject<RootObject>(rcvd_data);

ro 中,您拥有所有数据。

示例

bool ok = ro.ok;

foreach(Result r in ro.result)
{
    int uId = r.update_id;
    Message m = r.message;
    int msgId = m.message_id;
}

关于c# - 反序列化json数据c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39222568/

相关文章:

C# - 带有 OR 子句的 LINQ 语句

c# - 使用反射查找实现的接口(interface)

java - 强制改造以加载新数据

json - 为什么 Postman 在这个 POST 请求正文中显示 "Bad String"

javascript - 如何绑定(bind) desIndex 对 angular-ui-tree 中的值进行排序?

java - TelegramBots Java API - 从 CallbackQuery getChatInstance 方法获取聊天对象

telegram-bot - 从 Telegram bot 获取用户的 "Last Seen"?

python - 如何使用 python 中的 telegram bot 和 telepot 制作调查问卷

c# - 使用反射获取方法名和参数

c# - 如何实现用更具体的类型覆盖基础成员的效果?