2012-01-01 4 views
2

J'ai un objet JSON et je veux obtenir la valeur de: entités> Médias> tailles> grande> hGet noeud objet JSON

Est-il possible d'obtenir comme XML - méthode> XPath?

C'est des lignes supplémentaires non pertinentes à la question juste à cause de ...

{ 
    "created_at": "Sun, 01 Jan 2012 17:05:32 +0000", 
    "entities": { 
    "user_mentions": [ 
     { 
     "screen_name": "nurdanterbiyik", 
     "name": "nurdan", 
     "id": 264782080, 
     "id_str": "264782080", 
     "indices": [ 
      0, 
      15 
     ] 
     } 
    ], 
    "media": [ 
     { 
     "id": 153522253777219584, 
     "id_str": "153522253777219584", 
     "indices": [ 
      44, 
      64 
     ], 
     "media_url": "http://p.twimg.com/AiFrrSmCMAAdEID.jpg", 
     "media_url_https": "https://p.twimg.com/AiFrrSmCMAAdEID.jpg", 
     "url": "http://t.co/ZwHN9gvO", 
     "display_url": "pic.twitter.com/ZwHN9gvO", 
     "expanded_url": "http://twitter.com/emelkiraac/status/153522253773025280/photo/1", 
     "type": "photo", 
     "sizes": { 
      "large": { 
      "w": 536, 
      "h": 800, 
      "resize": "fit" 
      }, 
+0

Utilisez JavascriptSerializer: vous pouvez transmettre une chaîne et renvoyer un objet. De là, vous accédez aux propriétés de l'objet retourné et obtenez le h. – frenchie

+0

Je viens d'essayer. Merci – kankele

Répondre

0

Je préfère penser à des objets purement JSON comme un numéro de série - la première et la dernière chose que je veux faire est le pour le dé-sérialiser dans les objets avec lesquels je travaille ensuite.

Je ne peux pas vous dire la meilleure façon de le faire en C#, mais j'ai eu une bonne chance en utilisant JSON.NET

JSON.NET vous permettra également de (citation du site) « LINQ to JSON est bon Pour les situations où vous ne souhaitez obtenir que des valeurs de JSON, vous n'avez pas de classe à sérialiser ou à désérialiser, ou le JSON est radicalement différent de votre classe et vous devez lire et écrire manuellement à partir de vos objets. vous permet de lire, de créer et de modifier facilement JSON dans .NET. ", ce qui ressemble à ce que vous essayez de faire. Je ne l'ai jamais essayé, mais si tout ce que vous essayez de faire est d'obtenir une donnée à partir de cette longue chaîne, alors cela semble être une bonne alternative.

8

En utilisant JSON.NET vous avez plusieurs façons de lire des données sans avoir à désérialiser votre texte JSON en objets. Voici un exemple simplifié:

string json = @" { 
""created_at"": ""Sun, 01 Jan 2012 17:05:32 +0000"", 
    ""entities"": { 
    ""media"": [{ 
     ""type"": ""photo"", 
     ""sizes"": { 
     ""large"": { 
      ""w"": 536, 
      ""h"": 800, 
      ""resize"": ""fit"" 
     } 
     } 
    }] 
    } 
} 
"; 

JObject o = JObject.Parse(json); 
int h = (int)o["entities"]["media"][0]["sizes"]["large"]["h"]; 
int h2 = (int)o.SelectToken("entities.media[0].sizes.large.h"); 
+0

merci pour info je vais essayer – kankele

+0

comment vérifiez-vous si o ["entities"] ["media"] existent? – kankele

+0

Comment puis-je regarder 'media' s'il y avait plusieurs blocs à l'intérieur. – Si8