CSharp · Console
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
public class Program
{
public static void Main()
{
string json = @"
{
""id"": ""53234..."",
""first_name"": ""Nik"",
""last_name"": ""Westfield"",
""email"": ""[email protected]"",
""picture"": {
""data"": {
""height"": 720,
""is_silhouette"": false,
""url"": ""https://scontent.xx.fbcdn.net/v/t1.0-1/p720x720/3221....."",
""width"": 720
}
}
}";
FacebookMeDto me = JsonConvert.DeserializeObject<FacebookMeDto>(json);
Console.WriteLine("height: " + me.PictureDto.Height);
Console.WriteLine("url: " + me.PictureDto.Url);
}
}
public class FacebookMeDto
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("picture")]
[JsonConverter(typeof(FacebookPictureDtoConverter))]
public FacebookPictureDto PictureDto { get; set; }
}
public class FacebookPictureDto
{
[JsonProperty("height")]
public int Height { get; set; }
[JsonProperty("url")]
public string Url { get; set; }
}
public class FacebookPictureDtoConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(FacebookPictureDto);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
JObject obj = JObject.Load(reader);
FacebookPictureDto dto = new FacebookPictureDto();
serializer.Populate(obj["data"].CreateReader(), dto);
return dto;
}
public override bool CanWrite
{
get { return false; }
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}