Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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#_Json_Json.net - Fatal编程技术网

C# 在C中将JSON转换为数据集时出错

C# 在C中将JSON转换为数据集时出错,c#,json,json.net,C#,Json,Json.net,我使用JSON.Net检索以下JSON格式的数据 {分页:{CurrentPage:1,PageSize:20,NumberOfPages:3796,totalCount:75913},数据:[{SalesOrderNumber:003119},{SalesOrderNumber:003336},{SalesOrderNumber:003410},{SalesOrderNumber:003520}] 我可以成功地检索数据并将其加载到C文本框中。我要做的是将其加载到数据集中。我使用下面的语句尝试加

我使用JSON.Net检索以下JSON格式的数据

{分页:{CurrentPage:1,PageSize:20,NumberOfPages:3796,totalCount:75913},数据:[{SalesOrderNumber:003119},{SalesOrderNumber:003336},{SalesOrderNumber:003410},{SalesOrderNumber:003520}]

我可以成功地检索数据并将其加载到C文本框中。我要做的是将其加载到数据集中。我使用下面的语句尝试加载数据集

DataSet dsSalesOrders = JsonConvert.DeserializeObject<DataSet>(response.Content);
当我运行程序时,我得到以下错误

Newtonsoft.Json.JsonSerializationException:'读取数据表时出现意外的Json标记。期待星光,得到星光。路径“分页”,第1行,位置15'

由于这是我第一次使用JSON,我该如何解决这个问题


谢谢

请尝试将本课程作为接收课程

public class YourMainObject
{
    public Pagination Pagination { get; set; }
    public Datum[] Data { get; set; }
}

public class Pagination
{
    public int CurrentPage { get; set; }
    public int PageSize { get; set; }
    public int NumberOfPages { get; set; }
    public int totalCount { get; set; }
}

public class Datum
{
    public string SalesOrderNumber { get; set; }
}

并对此进行反序列化,然后分别填充数据集

PS:在下面的讨论中,程序员同事建议您可能并不真的需要使用数据集

谢谢你的类定义,这就是我想要的


至于我对数据集评论的讨论,它们是正确的,我不需要数据集。我主要使用SQL数据,因此我习惯于在WinForms项目中使用数据集来表示数据。加载Dataum类后,我将数据源分配给数组。

我将为该信息创建一个自定义类。它不是一个扁平的行/列结构,因此我不确定如果能够将其放入表中,您认为预期的结果会是什么?您需要将其反序列化为一个类型或一组类型,这些类型实际上与JSON的结构相匹配。如果您粘贴到JSON中,像这样的工具实际上会非常准确地为您创建它们。使用DataSet/DataTable/DataView时应该谨慎,因为它通常被用作表示信息的泄漏抽象。它们有它们的用途,但它们被滥用的次数太多了。大多数情况下,最好定义表示需要传递的信息的类。这不是数据集的有效格式,它非常特殊。您可以为数据创建包装,或为要反序列化到的对象创建自定义类型。你很可能会想做后者,然后你可以实现任何你需要的方法来将数据格式化成你想要加载的数据。然后分别填充数据集你的意思是完全跳过数据集?@mason我不知道他使用数据集的目的是什么,但他可能需要它来使用ADO.NET功能或其他功能,因此,对对象的额外访问应该可以避免在您无法完全控制的对象上出现错误。因此,他可以反序列化到一个自定义对象,然后用数据填充数据集。考虑到有效的使用很少,无论用例是什么,数据集都很可能不是必需的。我只是不想让你的回答给人一种错误的印象,即数据集是解决方案的一个必要部分。你可以将UDTs与ADO.NET一起使用。它是解决方案的一部分,因为用户特别要求使用数据集。如果他问我可以吗?或者我可以换一种方式吗?那你就有道理了。无论如何,如果他意识到他不需要数据集,那么,我不知道哈哈