2016-11-11 188 views
0

我是JSON的新手,所以我希望你能幫助我。 我這樣做:解析幾個JSON字段

var myfields = Newtonsoft.Json.JsonConvert.DeserializeObject<Rootobject>(s); 

這是鏈接的JSON:正如你可以看到我有許多領域,每個字段顯示幾次link 。 現在我只能訪問第一個。例如: :

final = myfields.results.First().warnings[0]; 

該字符串包含第一個警告字段。 我試圖把而不是0 - 1,但我得到一個錯誤。

我怎樣才能得到其他人?

感謝

+1

你試過了什麼?給我們一個您收到的json樣本和預期的輸出。 – Neyoh

+1

請顯示你的工作。我們無法幫助您解決問題,而無需查看您遇到的問題。 – Soviut

+0

爲了幫助我們,我們需要證明問題的[mcve]。請參閱https://stackoverflow.com/help/how-to-ask。 – dbc

回答

4

創建出您需要的字段類,然後反序列化JSON的意見

public class YourTwoField 
{ 
    [JsonProperty("field1")] 
    public string FieldOne { get; set; } 

    [JsonProperty("field2")] 
    public string FieldTwo { get; set; } 
} 

var myfields = Newtonsoft.Json.JsonConvert.DeserializeObject<YourTwoField>(yourJsonString); 
// use values 
myfields.FieldOne 

更新:

你的問題是,你沒有提供的信息不夠開始。 您需要的字段位於JSON層次結構的底層。 >Paste Special - - >粘貼JSON作爲類

現在把所有的JSON模式作爲類,其中

  1. 您的JSON結果
  2. 然後Edit複製到剪貼板
  3. 在Visual Studio中打開空文件我認爲會產生一些RootObject,然後

    var root = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(yourJsonString); 
    
    //Then your can brows to the values you want 
    root.results.First().openfda.generic_name 
    root.results.First().openfda.brand_name 
    

    或循環所有結果

    foreach(var result in root.results) 
    { 
        result.openfda.generic_name; 
        result.openfda.brand_name; 
    } 
    
+0

嗨,謝謝大家。這是例如API結果:[鏈接](https://api.fda.gov/drug/label.json?search=brand_name:humalog&limit=15),我反序列化的JSON問題。 –

+0

什麼樣的問題?並將你的API結果添加到問題 – Fabio

+0

嗨,我在評論之前添加了一個鏈接。我在解析選定的字段時遇到了問題,現在我看到了您的提示,然後嘗試使用它。 –