我想使用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"
}
我怎样才能阅读这样的代码?
正则表达式?
答案 0 :(得分:0)
解决方案的详细信息:请按照以下步骤操作。整个代码也会粘贴在最后以便完整(如果dotnetfiddle在将来停止或'死')
使用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; }
}
使用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 :)
这是控制台输出:
(注意,您需要通过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; }
}