0

辞書の配列の文字列である文字列があります。

フォーマットの例は次のとおりです。

[{"id":1,"items":[5,8]},{"id":2,"items":[6]},{"id":3,"items":[7]}]

(注: 上記のコードはすべて文字列です)

ここでは、2 つのキーを持つ辞書の配列の文字列です。最初のキーの値は数値で、2 番目のキーの値は数値の配列です。

C# (すぐに使えるアセンブリ) を使用して、すべての id 値を反復処理し、次にすべての項目配列値を反復処理するにはどうすればよいですか。

したがって、二重のforループのように期待します。1 つは ID を反復処理して数値を抽出し、反復ごとに項目配列のすべての値を反復処理する必要があります。

数値を解析して抽出する方法を知っている人はいますか?

ありがとう。

出力は次のようになります (たとえば)

1
 5  8
2
 6
3
 7

編集:

私はこれを試しました:

            string dataString = JSONValue.Text;
            JavaScriptSerializer jss = new JavaScriptSerializer();
            var json = new JavaScriptSerializer();
            var data = json.Deserialize<List<Dictionary<string, Object>>>(dataString);

            int sectionID;
            List<int> itemIDS;
            foreach (Dictionary<string, Object> dict in data)
            {
                sectionID = (int)dict["id"];
                itemIDS = (List<int>)dict["items"];
                ReportObject.log(sectionID.ToString());
                foreach (int itemID in itemIDS)
                {
                    ReportObject.log(itemID.ToString());
                }
            }

しかし、得ています

(6/27/2013 12:02:04 AM) - Error Message: Unable to cast object of type 'System.Collections.ArrayList' to type 'System.Collections.Generic.List`1[System.Int32]'.
4

2 に答える 2

2

これを試して

using using System.Web.Script.Serialization;
var jsonStr = "[{\"id\":1,\"items\":[5,8]},{\"id\":2,\"items\":[6]},{\"id\":3,\"items\":[7]}]";
var json = new JavaScriptSerializer();
var data = json.Deserialize<List<dynamic>>(jsonStr);

idこれにより、 と の 2 つのプロパティを持つ動的オブジェクトのリストが生成され、itemsそのリストをループして必要な情報を取得できます。

このdynamicキーワードは、.net 4.0 以降でのみ使用できます。それ以外の場合は、次のオプションを使用できます。

このようなクラスを作成します

public class Info{
      public int Id { get; set; }
      public int[] Items { get; set; }
}

その後var data = json.Deserialize<List<Info>>(jsonStr);

于 2013-06-27T03:48:36.557 に答える
0

文字列の int 値を取得してみてください。配列の場合は、具体的にインデックス上のオブジェクトを取得してToInt()、文字列オブジェクトを int に変換またはキャストしてみてください。それは両方の方法で行うことができます。

于 2013-06-27T03:36:58.053 に答える