2016-09-05 1 views
0

ich mit einem Beispiel für die Ausgabe des folgendenCondense in ein Objekt mit JSON.net

{ 
     "id": 12345678 

     "photo-url-1280": "http://68.media.tumblr.com/5076e813bdc463409f59172b2c152487/tumblr_ocy8peMYvo1uur5s9o1_1280.png", 
     "photo-url-500": "http://67.media.tumblr.com/5076e813bdc463409f59172b2c152487/tumblr_ocy8peMYvo1uur5s9o1_500.png", 
     "photo-url-400": "http://68.media.tumblr.com/5076e813bdc463409f59172b2c152487/tumblr_ocy8peMYvo1uur5s9o1_400.png", 
     "photo-url-250": "http://67.media.tumblr.com/5076e813bdc463409f59172b2c152487/tumblr_ocy8peMYvo1uur5s9o1_250.png", 
     "photo-url-100": "http://67.media.tumblr.com/5076e813bdc463409f59172b2c152487/tumblr_ocy8peMYvo1uur5s9o1_100.png", 
     "photo-url-75": "http://67.media.tumblr.com/5076e813bdc463409f59172b2c152487/tumblr_ocy8peMYvo1uur5s9o1_75sq.png", 
} 

Diese letzten Artikel sind sehr ähnliche mit einer API arbeiten, so möchte ich sie in ihr bewegen Objekt.

Ab jetzt wäre ein bestimmtes Bild wirklich chaotisch. die 400px Version bekommen könnte wie folgt aussehen -

myPhotoObject.Photo400 

Wenn aber ich in der Lage war, diese URLs in ein Objekt ihrer eigenen zu bewegen, ich könnte mehr es sauber nennen wie folgt aus:

myPhotoObject.Photo.400 

oder einführte, noch freundliche Methoden

myPhoto.Photo.GetClosestTo(451); 

Es ist ein Muster in dem URLs hier - nach einer 012.305., wird die identifizierende Größe z. ..._1280.png und ..._500.png

Wäre der beste Weg, um diese eine getter Eigenschaft zu schreiben, die nur eine Liste bekannter Größen an eine URL hängt? Wäre diese Methode weniger effizient als die reinen JSON.net-Konverter?

Antwort

0

Ich schlage vor, Ihre JSON in ein Wörterbuch zuerst zu analysieren, wie here beschrieben, und kopieren Sie sie dann manuell auf einen strukturierteren Objekt:

Dictionary<string, string> dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json); 
var myImageObject = new { Id = "", Images = new Dictionary<int, string>()}; 
foreach(var key in dict.Keys) { 
    if(key == "id") { 
     myImageObject.Id = dict[key] 
    } 
    else { 
     var imageSize = ParseForImageSize(key); 
     myImageObject.Images.Add(imageSize, dict[key]) 
    } 
} 
Verwandte Themen