解决方案的详细信息:按照以下步骤操作。为了完整起见,整个代码也粘贴在末尾(以防 dotnetfiddle 出现故障或将来“死亡”)
步骤1
使用json2csharp.com或类似的东西从您的 JSON 响应中生成 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 :)
这是控制台输出:
完整的解决方案代码
(注意,您需要Newtonsoft.Json
通过包管理器控制台使用 Nuget 添加到您的项目中。)
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; }
}