Pushbullet API通知

时间:2016-12-10 17:35:48

标签: c# api pushbullet

我想使用Pushbullet API在C#中创建一个程序。

现在我从手机收到通知,但我想利用收到的数据。

如何分析和提取这样的数据:

{
  "push": {
    "application_name": "Pushbullet",
    "body": "If you see this on your computer, Android-to-PC notifications are working!\n",
    "client_version": 125,
    "dismissable": true,
    "has_root": false,
    "icon": "(base64_encoded_jpeg)",
    "notification_id": "-8",
    "notification_tag": null,
    "package_name": "com.pushbullet.android",
    "source_device_iden": "ujpah72o0sjAoRtnM0jc",
    "source_user_iden": "ujpah72o0",
    "title": "Mirroring test",
    "type": "mirror"
  },
  "type": "push"
}

我怎样才能阅读这样的代码?

正则表达式?

1 个答案:

答案 0 :(得分:0)

这是一个有效的.Net小提琴=> https://dotnetfiddle.net/9Lt67g

解决方案的详细信息:请按照以下步骤操作。整个代码也会粘贴在最后以便完整(如果dotnetfiddle在将来停止或'死')

第1步

使用json2csharp.com或类似的东西从JSON Response生成C#POCO。这是我使用您提供的示例JSON生成的内容。

public class Push
{
    public string application_name { get; set; }
    public string body { get; set; }
    public int client_version { get; set; }
    public bool dismissable { get; set; }
    public bool has_root { get; set; }
    public string icon { get; set; }
    public string notification_id { get; set; }
    public object notification_tag { get; set; }
    public string package_name { get; set; }
    public string source_device_iden { get; set; }
    public string source_user_iden { get; set; }
    public string title { get; set; }
    public string type { get; set; }
}

public class RootObject
{
    public Push push { get; set; }
    public string type { get; set; }
}

第2步

使用JSON.Net将JSON反序列化到您的POCO中

Notification notification = JsonConvert.DeserializeObject<Notification>(json);
Console.WriteLine("PushBullet API Notification...");
Console.WriteLine("   App Name: {0}", notification.push.application_name);
Console.WriteLine("   Notification Body: {0}", notification.push.body);
// .... etc. you get the idea. You now have the notification in a POCO and do 
// whatever you want with it :)

这是控制台输出:

enter image description here

完整解决方案代码

(注意,您需要通过Package Manager控制台使用Nuget将Newtonsoft.Json添加到您的项目中。)

using System;
using Newtonsoft.Json;

public class Program
{
    // Stack Overflow Question Link: http://stackoverflow.com/q/41078332/325521
    // My Answer Link: http://stackoverflow.com/a/41113725/325521
    // Author: Shiva Kumar
    // Web: shiva.io
    public static void Main()
    {
        var json = @"
        {
          ""push"": {
            ""application_name"": ""Pushbullet"",
            ""body"": ""If you see this on your computer, Android-to-PC notifications are working!\n"",
            ""client_version"": 125,
            ""dismissable"": true,
            ""has_root"": false,
            ""icon"": ""(base64_encoded_jpeg)"",
            ""notification_id"": ""-8"",
            ""notification_tag"": null,
            ""package_name"": ""com.pushbullet.android"",
            ""source_device_iden"": ""ujpah72o0sjAoRtnM0jc"",
            ""source_user_iden"": ""ujpah72o0"",
            ""title"": ""Mirroring test"",
            ""type"": ""mirror""
          },
          ""type"": ""push""
        }";

        Notification notification = JsonConvert.DeserializeObject<Notification>(json);
        Console.WriteLine("PushBullet API Notification...");
        Console.WriteLine("   App Name: {0}", notification.push.application_name);
        Console.WriteLine("   Notification Body: {0}", notification.push.body);
        // .... etc. you get the idea. You now have the notification in a POCO and do 
        // whatever you want with it :)
    }
}


public class Push
{
    public string application_name { get; set; }
    public string body { get; set; }
    public int client_version { get; set; }
    public bool dismissable { get; set; }
    public bool has_root { get; set; }
    public string icon { get; set; }
    public string notification_id { get; set; }
    public object notification_tag { get; set; }
    public string package_name { get; set; }
    public string source_device_iden { get; set; }
    public string source_user_iden { get; set; }
    public string title { get; set; }
    public string type { get; set; }
}

public class Notification
{
    public Push push { get; set; }
    public string type { get; set; }
}