2017-01-08 24 views
0

私は次のようなJSON文字列ハウツー反復動的配列

[{"field1":"1","field2":"2","field3":"3"}{"field1":"11","field2":"22","field3":"33"}{"field1":"111","field2":"222","field3":"333"}] 

を持って、私はそれを解析するために、次のコードを使用 -

var jss = new JavaScriptSerializer(); 
dynamic data = jss.Deserialize<dynamic>(s); 

どのように私は、動的データ配列を反復処理することができますか?

+3

「foreach(データ内の動的x)」を試してください。 – Enigmativity

+0

newtonsoft.jsonを使用している場合は、これを実際にJObjectsのコレクションとしてデシリアライズすることができます – ironstone13

答えて

0
using System.IO; 
using System.Web.Script.Serialization; 

namespace Deserialize 
{ 
    class Program 
    { 
     static void Main() 
     { 
      string jsonString = File.ReadAllText("dynamic.json"); 

      var serializer = new JavaScriptSerializer(); 

      dynamic data = serializer.Deserialize<dynamic>(jsonString); 

      foreach (var item in data) 
      { 
       foreach (var subitem in item) 
       { 
        System.Console.WriteLine("Key={0}, Value={1}", subitem.Key, subitem.Value); 
       } 

       System.Console.WriteLine(); 
      } 

      System.Console.ReadKey(); 
     } 
    } 
} 

私が動作するように、このためのJSONファイル内の3つのオブジェクトを分離するためにカンマを追加する必要があります...しかし、私は、これはあなたが後にあるものを(おおよそ)だと思います。私が誤解した場合は申し訳ありません。

+0

IEnummerableではないため、データを反復できないという問題があります。 –

0

私は次のコードを使用して終了しました。

List<myClass> l = JsonConvert.DeserializeObject<List<myClass>>(jsonString); 

私はlを繰り返しても問題はありませんでした。

myClassはフィールド定義を持つローカルクラスです。フィールドとクラスをpublicにする必要があります。