2016-03-12 3 views
-1

Je cette JSON:Convertir Liste hiérarchique en Datatable/dataSet

{ 
    "query": { 
    "count": 43, 
    "created": "2016-03-12T09:46:36Z", 
    "lang": "en-US", 
    "results": { 
     "a": [ 
     { 
      "class": "image", 
      "href": "/wiki/File:Yahoo!_logo.svg", 
      "img": { 
      "alt": "Yahoo! logo.svg", 
      "data-file-height": "233", 
      "data-file-width": "1000", 
      "height": "51", 
      "src": "//upload.wikimedia.org/wikipedia/commons/thumb/2/24/ 
        Yahoo%21_logo.svg/220px-Yahoo%21_logo.svg.png", 
      "srcset": "//upload.wikimedia.org/wikipedia/commons/thumb/2/24/ 
         Yahoo%21_logo.svg/330px-Yahoo%21_logo.svg.png 1.5x 
         , //upload.wikimedia.org/wikipedia/commons/thumb/2/24/ 
         Yahoo%21_logo.svg/440px-Yahoo%21_logo.svg.png 2x", 
      "width": "220" 
      } 
     }, 
     { 
      "href": "/wiki/Types_of_business_entity", 
      "title": "Types of business entity", 
      "content": "Type" 
     }, 
     { 
      "href": "/wiki/Public_company", 
      "title": "Public company", 
      "content": "Public" 
     }, 
     { 
      "href": "/wiki/Ticker_symbol", 
      "title": "Ticker symbol", 
      "content": "Traded as" 
     }, 
     { 
      "href": "/wiki/NASDAQ", 
      "title": "NASDAQ", 
      "content": "NASDAQ" 
     }, 
     { 
      "class": "external text", 
      "href": "http://www.nasdaq.com/symbol/yhoo", 
      "rel": "nofollow", 
      "content": "YHOO" 
     }, 
     { 
      "href": "/wiki/NASDAQ-100", 
      "title": "NASDAQ-100", 
      "content": "NASDAQ-100 Component" 
     }, 
     { 
      "class": "mw-redirect", 
      "href": "/wiki/S%26P_500", 
      "title": "S&P 500", 
      "content": "S&P 500 Component" 
     }, 
     { 
      "href": "/wiki/Sunnyvale,_California", 
      "title": "Sunnyvale, California", 
      "content": "Sunnyvale" 
     }, 
     { 
      "href": "/wiki/Entrepreneurship", 
      "title": "Entrepreneurship", 
      "content": "Founder(s)" 
     }, 
     { 
      "href": "/wiki/Jerry_Yang_(entrepreneur)", 
      "title": "Jerry Yang (entrepreneur)", 
      "content": "Jerry Yang" 
     }, 
     { 
      "href": "/wiki/David_Filo", 
      "title": "David Filo", 
      "content": "David Filo" 
     }, 
     { 
      "href": "/wiki/Maynard_Webb", 
      "title": "Maynard Webb", 
      "content": "Maynard Webb" 
     }, 
     { 
      "href": "/wiki/Marissa_Mayer", 
      "title": "Marissa Mayer", 
      "content": "Marissa Mayer" 
     }, 
     { 
      "href": "/wiki/David_Filo", 
      "title": "David Filo", 
      "content": "David Filo" 
     }, 
     { 
      "href": "#cite_note-1", 
      "span": [ 
      "[", 
      "]" 
      ], 
      "content": "1" 
     }, 
     { 
      "href": "/wiki/Product_(business)", 
      "title": "Product (business)", 
      "content": "Products" 
     }, 
     { 
      "class": "mw-redirect", 
      "href": "/wiki/Yahoo_News", 
      "title": "Yahoo News", 
      "content": "Yahoo News" 
     }, 
     { 
      "class": "mw-redirect", 
      "href": "/wiki/Yahoo_Mail", 
      "title": "Yahoo Mail", 
      "content": "Yahoo Mail" 
     }, 
     { 
      "class": "mw-redirect", 
      "href": "/wiki/Yahoo_Finance", 
      "title": "Yahoo Finance", 
      "content": "Yahoo Finance" 
     }, 
     { 
      "class": "mw-redirect", 
      "href": "/wiki/Yahoo_Sports", 
      "title": "Yahoo Sports", 
      "content": "Yahoo Sports" 
     }, 
     { 
      "class": "mw-redirect", 
      "href": "/wiki/Yahoo_Search", 
      "title": "Yahoo Search", 
      "content": "Yahoo Search" 
     }, 
     { 
      "class": "mw-redirect", 
      "href": "/wiki/Yahoo_Messenger", 
      "title": "Yahoo Messenger", 
      "content": "Yahoo Messenger" 
     }, 
     { 
      "href": "/wiki/Yahoo!_Answers", 
      "title": "Yahoo! Answers", 
      "content": "Yahoo! Answers" 
     }, 
     { 
      "href": "/wiki/Tumblr", 
      "title": "Tumblr", 
      "content": "Tumblr" 
     }, 
     { 
      "href": "/wiki/Flickr", 
      "title": "Flickr", 
      "content": "Flickr" 
     }, 
     { 
      "href": "/wiki/List_of_Yahoo!-owned_sites_and_services", 
      "title": "List of Yahoo!-owned sites and services", 
      "content": "See Yahoo products" 
     }, 
     { 
      "href": "/wiki/Revenue", 
      "title": "Revenue", 
      "content": "Revenue" 
     }, 
     { 
      "href": "#cite_note-2", 
      "span": [ 
      "[", 
      "]" 
      ], 
      "content": "2" 
     }, 
     { 
      "href": "/wiki/Earnings_before_interest_and_taxes", 
      "title": "Earnings before interest and taxes", 
      "content": "Operating income" 
     }, 
     { 
      "href": "#cite_note-10K-3", 
      "span": [ 
      "[", 
      "]" 
      ], 
      "content": "3" 
     }, 
     { 
      "href": "/wiki/Net_income", 
      "title": "Net income", 
      "content": "Net income" 
     }, 
     { 
      "href": "#cite_note-4", 
      "span": [ 
      "[", 
      "]" 
      ], 
      "content": "4" 
     }, 
     { 
      "href": "/wiki/Asset", 
      "title": "Asset", 
      "content": "Total assets" 
     }, 
     { 
      "href": "#cite_note-5", 
      "span": [ 
      "[", 
      "]" 
      ], 
      "content": "5" 
     }, 
     { 
      "href": "/wiki/Equity_(finance)", 
      "title": "Equity (finance)", 
      "content": "Total equity" 
     }, 
     { 
      "href": "#cite_note-6", 
      "span": [ 
      "[", 
      "]" 
      ], 
      "content": "6" 
     }, 
     { 
      "href": "#cite_note-7", 
      "span": [ 
      "[", 
      "]" 
      ], 
      "content": "7" 
     }, 
     { 
      "class": "mw-redirect", 
      "href": "/wiki/List_of_acquisitions_by_Yahoo!", 
      "title": "List of acquisitions by Yahoo!", 
      "content": "Yahoo subsidiaries" 
     }, 
     { 
      "class": "external text", 
      "href": "https://www.yahoo.com", 
      "rel": "nofollow", 
      "wbr": [ 
      null, 
      null 
      ], 
      "content": "www.yahoo.com" 
     }, 
     { 
      "href": "/wiki/Alexa_Internet", 
      "title": "Alexa Internet", 
      "content": "Alexa" 
     }, 
     { 
      "class": "external text", 
      "href": "//en.wikipedia.org/w/index.php?title=Yahoo!&action=edit", 
      "content": "[update]" 
     }, 
     { 
      "href": "#cite_note-alexaranking-8", 
      "span": [ 
      "[", 
      "]" 
      ], 
      "content": "8" 
     } 
     ] 
    } 
    } 
} 

... mais je suis incapable de convertir en DataTable en .Net

Je dois convertir la réponse en DataSet. Voici mes classes que j'ai utilisées lors de la conversion de la réponse. Je sais que nous convertissons facilement la réponse dans la liste, mais le problème se pose lorsque nous convertissons la réponse en données ou en données qui a une solution? J'ai essayé de convertir en datatable

public class YahooImg 
{ 
    public string alt { get; set; } 
    [JsonProperty("data-file-height")] 
    public string data_file_height { get; set; } 
    [JsonProperty("data-file-width")] 
    public string data_file_width { get; set; } 
    public string height { get; set; } 
    public string src { get; set; } 
    public string srcset { get; set; } 
    public string width { get; set; } 
} 
public class YahooData 
{ 
    [JsonProperty("class")] 
    public string CLASS { get; set; } 
    public string href { get; set; } 
    [JsonProperty("Img")] 
    public YahooImg img { get; set; } 
    public string title { get; set; } 
    public string content { get; set; } 
    public string rel { get; set; } 
    public List<string> span { get; set; } 
    public List<object> wbr { get; set; } 
} 
public class YahooResults 
{ 
    [JsonProperty("A")] 
    public List<YahooData> a { get; set; } 
} 
public class YahooQuery 
{ 
    public int count { get; set; } 
    public string created { get; set; } 
    public string lang { get; set; } 
    [JsonProperty("Results")] 
    public YahooResults results { get; set; } 
} 
public class YahooAPIData 
{ 
    [JsonProperty("query")] 
    public YahooQuery Yahooquery { get; set; } 
    public YahooQuery GetYahooResult(string url) 
    { 
     var ds = new YahooAPIData(); 
     if (!url.ToLower().Contains("yahoo")) 
      return ds.Yahooquery; 
     try 
     { 
      var wc = new WebClient(); 
      wc.Headers.Add(HttpRequestHeader.Accept, "application/json"); 
      var response = wc.DownloadString(url); 
      var dss = JsonConvert.DeserializeObject<YahooAPIData>(response);    
     } 
     catch (Exception exp) 
     { 
      var r = exp; 
     } 
     return ds.Yahooquery; 
    } 
} 
+0

Veuillez ne pas créer de lien vers des sites externes sauf si le contenu de votre question est déjà pris en charge. – Enigmativity

+0

Vous avez vraiment besoin de supprimer le 'catch (Exception exp)' - c'est une mauvaise habitude de tout attraper comme ça. Vous devez également disposer du 'WebClient'. – Enigmativity

Répondre

-1

Je ne sais pas exactement ce que vous voulez faire comme vous ne l'avez pas affiché et la structure d'ensemble de données dans laquelle vous souhaitez analyser, mais, si vous créez suivre des cours, je pense vous pouvez analyser votre contenu JSON dans le modèle d'objet Query.

public class Query 
{ 
    int count; 
    datetime created; 
    string lang; 
    Result[] a; 
} 

public class Result 
{ 

    string _class; 
    string href; 
    Image img; 

} 

public class Image 
{ 

    string alt; 
    string data_file_height; 
    string data_file_width; 
    string height; 
    string src; 
    string srcset; 
    string width; 

} 
+0

Pouvez-vous au moins montrer comment convertir le JSON à ce modèle d'objet? P.S. cela ne compile même pas pour le moment. – Enigmativity

+0

@Trikaldarshi J'ai la même structure de classes que vous mentionnez. je convertis le json en liste le problème est quand je convertis la liste résultante en table de données parce que la liste a des données hiérarchiques. –

+0

@Enigmativity: Il existe plusieurs bibliothèques disponibles pour convertir JSON au modèle objet viz. * Newtonsoft.Json *, C'est à vous de vouloir l'utiliser. – Trikaldarshi