如何使用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]'.
尝试这个
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
和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);
尝试获取字符串的int值,如果是数组,则具体获取索引上的对象并尝试ToInt()
或将字符串对象强制转换为int。这两种方法都可以实现。