Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在将每个记录添加到列表c时循环通过JSON对象#_C#_Xamarin - Fatal编程技术网

C# 在将每个记录添加到列表c时循环通过JSON对象#

C# 在将每个记录添加到列表c时循环通过JSON对象#,c#,xamarin,C#,Xamarin,我对c#有点陌生,我正在尝试添加从web服务返回的所有记录,并将它们添加到指定的列表中。我的JSON如下所示: { "errMsg":"", "date":"2020-10-21 10:20:28", "Category": [{"iCatID":"1","sDescription":"All},{&q

我对c#有点陌生,我正在尝试添加从web服务返回的所有记录,并将它们添加到指定的列表中。我的JSON如下所示:

{
  
 "errMsg":"",
   "date":"2020-10-21 10:20:28",
   "Category":
   [{"iCatID":"1","sDescription":"All},{"iCatID":"2","sDescription":"All Vegetables"},....],
 "Product":
   [{"iProductID":"10","sDescription":"Apples},   {"iProductID":"11","sDescription":"All Vegetables"},....]
}
产品和类别都返回了100或1000种产品。到目前为止,我一直在尝试和迭代它们,并将它们添加到自己的列表中,然后将这两个列表添加到我的应用程序中名为Product和Category的两个本地表中

我显然做错了什么,因为我当前的代码不起作用。 私有列表_product=新列表(); 私有列表_category=新列表()

我的错误如下Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:与“System.Collections.Generic.List.Add(Project.Models.Category)”匹配的最佳重载方法具有一些无效参数

我查看了我的分类课程,我想我已经拥有了我所需要的一切

public class Category
    {

        [PrimaryKey]
        public int iCatID { get; set; }
        public string sDescription { get; set; }
}
我不明白上面说的是什么无效的论点。我得到这两个类别和产品。有什么建议吗? 编辑:我也尝试过使用RootObject,我只是不知道如何从那里访问产品和类别列表:

public class RootObject
{
    public  List<Category> CategoyItems { get; set; }

    public List<Product> ProductItems { get; set; }
    public string errMsg { get; set; }
    public string date { get; set; }            
}
公共类根对象
{
公共列表CategoyItems{get;set;}
公共列表ProductItems{get;set;}
公共字符串errMsg{get;set;}
公共字符串日期{get;set;}
}

我在JSON和RootObject中添加了另外两个内容。

您需要将数据反序列化为具体类型

var data = JsonConvert.DeserializeObject<RootObject>(content);

foreach(var obj in data.ProductItems)
{
  _product.Add(obj);
}
var data=JsonConvert.DeserializeObject(内容);
foreach(data.ProductItems中的var obj)
{
_产品。添加(obj);
}

但我的JSON数据也包括类别。我一次拉多个阵列。一个是Product,另一个是Category,这就是我尝试使用dynamic的原因。好吧,奇怪的是,现在我得到了这个错误系统。NullReferenceException:对象引用未设置为“foreach(data.ProductItems中的var obj)”行中对象的实例。你知道为什么吗?因为ProductItems是空的。JSON中没有这个名称,所以除非你有一个映射属性,否则它不会正确地反序列化。好的,我把它修好了。我认为我现在的思路是正确的,因为我现在遇到了这个错误,无法将当前JSON对象(例如,{“name”:“value”})反序列化为类型“System.Collections.Generic.List`1[sprecipapp2020.Models.Category_type]”,因为该类型需要一个JSON数组(例如[1,2,3])才能正确反序列化。我以前处理过那个错误,所以我会再次深入调查,谢谢你的帮助。我的JSON中有一些问题。但是这很管用。您能展示一下
response.content.ReadAsStringAsync()
的示例内容数据吗?我会检查数据的结构。虽然很长,但让我看看能不能找到你that@JuniorJiang-MSFT我添加了更多的JSON,我也添加了一些东西,希望这能给你一个更好的描述。好的,谢谢你的更新。如果你已经解决了这个问题,记得在有时间的时候标出答案。这将有助于其他人了解解决方案。
var data = JsonConvert.DeserializeObject<RootObject>(content);

foreach(var obj in data.ProductItems)
{
  _product.Add(obj);
}