2016-11-11 5 views
0

私はJSONを初めて使うので、私があなたを助けてくれることを願っています。 私はこれをしなかった:link あなたは私が多くの分野を持って見ることができるように、各フィールドが数回表示されます。JSONのほんの少数のフィールドを解析する

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

これはJSONのリンクがあります。 私は最初のものにしかアクセスできません。 例:

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階層の最下位レベルにあります。

  1. は、Visual Studioでクリップボード
  2. にあなたのJSONの結果をコピーし、空のファイルを開く
  3. その後Edit - >Paste Special - >クラス

が今どこのクラスとして、すべてのJSONスキーマを取得してJSONを貼り付け私はいくつかの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の結果です:[link](https://api.fda.gov/drug/label.json?search=brand_name:humalog&limit=15)、私はJSONのデシリアライズに関する問題を抱えていました。 –

+0

どのような問題がありますか?質問にあなたのAPI結果を追加してください – Fabio

+0

こんにちは、私は前にコメントにリンクを追加しました。選択したフィールドを解析する際に問題が発生しました。これであなたのヒントが表示され、使用しようとします。 –