如何使用c#从字符串数组/字典中提取数字

本文关键字:字典 提取 数字 数组 何使用 字符串 | 更新日期: 2023-09-27 18:20:00

我有一个字符串,它是字典数组的字符串。

格式的一个例子是:

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

(注意:以上所有代码都是字符串)

这里是一个字典数组的字符串,它有两个键,第一个键的值是一个数字,第二个键的数值是一个数组。

使用c#(开箱即用的程序集),我如何遍历所有id值,然后遍历所有项数组值。

所以我想要一个双循环。一个是迭代id并提取数字,然后对于每次迭代,它都需要迭代items数组的所有值。

有人知道如何解析和提取数字吗?

谢谢。

输出类似(例如)

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]'.

如何使用c#从字符串数组/字典中提取数字

尝试这个

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);

这将生成一个具有两个属性iditems的动态对象列表,然后您可以循环浏览该列表并检索所需的信息。

dynamic关键字仅在.net 4.0或更高版本中可用。否则,您可以使用以下选项。

创建一个类似的类

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

然后var data = json.Deserialize<List<Info>>(jsonStr);

尝试获取字符串的int值,如果是数组,则具体获取索引上的对象并尝试ToInt()或将字符串对象强制转换为int。这两种方法都可以实现。