2017-09-28 9 views
-2

私の質問は明らかです。このjson配列で指定された項目(名前 'name'の値のみ)を取得したい。c#指定された名前の配列のすべての子を取得

https://i.hizliresim.com/o6Z0Wb.png <例( 'result'セクションは以前のサークルに含まれていました)。

{"success":true,"message":"","result":[ 
{"name":"VALUE_I_WANT_TO_GET1","Created":"2017-06-06T01:22:35.727"}, 
{"name":"VALUE_I_WANT_TO_GET2","Created":"2017-06-06T01:22:35.727"}, 
{"name":"VALUE_I_WANT_TO_GET3","Created":"2017-06-06T01:22:35.727"}, 
{"name":"VALUE_I_WANT_TO_GET4","Created":"2017-06-06T01:22:35.727"} 
]} 

ご覧のとおり、これは明らかな質問です。私のコードは(私はそれがこのようなものでなければならないと思う)。

 var json = wc.DownloadString("website/url"); 
     JObject data = JObject.Parse(json); 
     var test = (string)data["result"][/*I want to get all values with name 'name'*/]["name"]; 

私はこのコードでそれをやった、あなたはそれを使用することができます:)

 JObject data = JObject.Parse(json); 

     for (int i = 0; i <= data["result"].Count()-1; i++) 
     { 
      var test = (string)data["result"][i]["name"]; 
      listBox1.Items.Add(test); 
     } 
+1

サンプルjsonを表示してください。 –

+0

私は編集した質問 – Radagast

+0

どのタイプが 'json_array'で、どのフレームワークをデシリアライズに使用しますか? –

答えて

0

をここにいくつかのコードです:

void Main() 
{ 
    // create array 
    DataFromJSON[] data = new UserQuery.DataFromJSON[3]; 
    data[0] = new DataFromJSON() { Data = "val0", Created = DateTime.Now }; 
    data[1] = new DataFromJSON() { Data = "val1", Created = DateTime.Now }; 
    data[2] = new DataFromJSON() { Data = "val2", Created = DateTime.Now }; 

    var values = from x in data 
       select x.Data; 

    values.Dump(); 

} 

// Define other methods and classes here 
public class DataFromJSON 
{ 
    public string Data { get; set; } 
    public DateTime Created { get; set;} 
} 

ここLinqPadを使用して結果の#saの画像、 。行values.Dump()は、LinqPadによって定義された拡張メソッドを呼び出して、それが添付されているオブジェクトをコードのwindorの下の 'Results'ウィンドウに出力します。

MyType results = JsonConvert.DeserializeObject<MyType>(json_array); 

MyTypeはこのようなものです::

LinqPad5 resuts

+0

申し訳ありませんが、私のコードです。 var json = wc.DownloadString( "https:// site/JSON_DATA"); JObject data = JObject.Parse(json); var test =(文字列)data ["result"] [0-226] ["NAME_TO_GET_VALUE"] textBox7.Text = test; – Radagast

0

まずあなたがあなたのタイプにあなたのJSONをデシリアライズする必要が

class MyType 
{ 
    public bool success { get; set; } 
    public string message { get; set; } 
    public List<AnotherType> results { get; set; } 
} 

class AnotherType 
{ 
    public string data { get; set; } 
    public DateTime Created { get; set; } 
} 

は今から最初の227個の要素を取得し、そのdataを選択:

var data = myInstance.results.Take(227).Select(x => x.data); 
+0

いいえ、SPECİFİEDNAMEのように227人の子供を連れて行きたいと思っています:deserialized_Json ["results"] [0-227] ["SPECİFİED_NAME_FOR_GET_VALUES"]; – Radagast

0

Visual Studioがあなたのために何ができる巧妙なトリックがあります。まず、問い合わせたいjsonのサンプルをコピーし、新しいC#ファイルを開き、Edit - >Paste Special - >Paste JSON as classesを選択します。
ブーム!ここに必要なクラスはありますが、意味のある名前を付けてください。その中に、アレイに保存されたデータで、あなたのルートオブジェクトのインスタンスをあげる

var myInstance = JsonConvert.DeserializeJson<MyClass>(jsonString); 

次に、あなたはそうのようなJSONをdesiralizeすることができます。

EDIT:唯一の文字列を含むリストを与えるだろう

myInstance.Array.Select(x => x.name).ToList(); 

値を選択するには、この(あなたが上の行にデータをデシリアライズした後)のような何かを行うことができますあなたのすべてのentireの名前のプロパティ。

+0

画像を質問に追加してください。 – Radagast

+0

@Radagast - 何かが私には分かりません、同じタイプのデータにすべてのインスタンスがありますか?または配列に複数の型が含まれていますか?つまり、 'name'というプロパティのすべての値を探していますか、配列のすべてのインスタンスから' name'というプロパティを含んでいるものを探していますか(そしてもう一つはそのようなプロパティを含んでいません) 。 – CKII

+0

この回答をお読みください:https://stackoverflow.com/questions/46468642/c-sharp-get-all-childs-of-a-array-with-specified-name/46469888#46469888 – Radagast

関連する問題