如何使用c#从字符串数组/字典中提取数字?
我有一个字符串,它是一个字典数组的字符串 该格式的一个示例是:如何使用c#从字符串数组/字典中提取数字?,c#,json,string-parsing,C#,Json,String Parsing,我有一个字符串,它是一个字典数组的字符串 该格式的一个示例是: [{"id":1,"items":[5,8]},{"id":2,"items":[6]},{"id":3,"items":[7]}] (注:以上代码均为字符串) 这里是一个字典数组的字符串,它有两个键,第一个键的值是一个数字,第二个键的值是一个数字数组 使用c#(开箱即用程序集),如何迭代所有id值,然后迭代所有项数组值 所以我希望能有一个双循环。一种方法是遍历id并提取数字,然后每次迭代都需要遍历items数组的所有值 有人知道
[{"id":1,"items":[5,8]},{"id":2,"items":[6]},{"id":3,"items":[7]}]
(注:以上代码均为字符串)
这里是一个字典数组的字符串,它有两个键,第一个键的值是一个数字,第二个键的值是一个数字数组
使用c#(开箱即用程序集),如何迭代所有id值,然后迭代所有项数组值
所以我希望能有一个双循环。一种方法是遍历id并提取数字,然后每次迭代都需要遍历items数组的所有值
有人知道如何解析和提取数字吗
谢谢
输出如下(例如)
编辑:
我试过这个:
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());
}
}
尝试获取string的int值,如果它是数组,则获取索引上的对象,并尝试使用
ToInt()
或将string对象强制转换为int。这两种方法都可以实现。尝试此方法
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);
然后
var data=json.Deserialize(jsonStr)代码>这就是JSON——您是在寻找解析它的方法,还是在解析它并寻找循环的方法?如果是前者,谷歌“C#JSON解析”,你会发现很多有用的信息,包括,这很好,不是JSON吗?你可以使用外部JSON库…我已经对它进行了字符串化,现在我在c#中得到了它的字符串,并希望在c#中从中提取整数。我希望在没有外部库的情况下实现这一点。有一个JSON库不是外部的,JavaScriptSerializer
。命名空间动态未定义。您使用的是哪个.net framework,可从.net 4.0或更高版本获得。我更新了上面的答案,并收到一条错误消息。我使用的是.net 3.5。在这种情况下使用我的第二个选项,那么如何像我在示例中尝试的那样循环使用所有值?
(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);
public class Info{
public int Id { get; set; }
public int[] Items { get; set; }
}