C#从Json或数据集提取数据-从Python移植(Json到Dict)

C#从Json或数据集提取数据-从Python移植(Json到Dict),c#,python,json,dictionary,dataset,C#,Python,Json,Dictionary,Dataset,我有以下Python脚本,需要将其移植到C#。这将从URL获取JSON响应,然后将其弹出到字典中。然后检查下一页的数据,如果有数据(不是空的),则返回true。下面我将粘贴我的C代码,但我真的很难完成最后一部分。我不知道,当然我也不想理解JSON响应中的数据,我只想知道下一页的字段是否在那里 # Gets JSON response response = requests.get(url, auth=(user, pwd)) if response.status_code != 200:

我有以下Python脚本,需要将其移植到C#。这将从URL获取JSON响应,然后将其弹出到字典中。然后检查下一页的数据,如果有数据(不是空的),则返回true。下面我将粘贴我的C代码,但我真的很难完成最后一部分。我不知道,当然我也不想理解JSON响应中的数据,我只想知道下一页的字段是否在那里

# Gets JSON response
response = requests.get(url, auth=(user, pwd))

if response.status_code != 200:
   print('Status:', response.status_code, 'Problem with the request. Exiting.')
   exit()

data = response.json()

if(data['next_page']):
   return True
else:
   return False
这就是我得到的c代码:

using Newtonsoft.Json;

string response = "";

using (WebClient client = new WebClient())
{
    client.UseDefaultCredentials = true;
    client.Credentials = new NetworkCredential(user, password);

    try
    {
        response = client.DownloadString(url);
    } catch (Exception e)
    {
        throw e;
    }
}

XmlDocument xml = JsonConvert.DeserializeXmlNode(json, "RootObject");
XmlReader xr = new XmlNodeReader(xml);
DataSet ds = new DataSet("Json Data");

ds.ReadXml(xr);

从我在web上看到的情况来看,当您知道数据集中的数据是什么时,数据集工作得最好。我只想知道是否有一个名为next_page的字段,如果有,它是空的还是有数据。我正在努力从数据集中获取任何信息。

您需要包含JSON.net nuget包(),这使您能够将JSON响应反序列化到一个字典(或者最好是一个新类)中,以便访问响应

在包含库之后,将此添加到您的try-catch中

var dict = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(response);
var dict=Newtonsoft.Json.JsonConvert.DeserializeObject(响应);
或者,您可以创建一个新类来表示预期的JSON并反序列化到该JSON中

public class ResponseObject
{
    public string next_page { get; set; }
}

var responseResult = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseObject>(response);
公共类响应对象
{
公共字符串下一页{get;set;}
}
var responseResult=Newtonsoft.Json.JsonConvert.DeserializeObject(响应);

不幸的是,我已经尝试了第一种方法,但它无法转换。我得到以下错误:捕获了JsonReaderException:读取字符串时出错。意外标记:星光。路径“票证”,第1行,位置12。然而,您的第二个解决方案就像一个魅力!这将是因为JSON不是一个简单的字典,在c中,最好尝试使用具体的类来链接它,而不是从字典中读取神奇的字符串,然后可以在类型安全的庄园中传递它。第二种方法应该可以很好地工作。谢谢,这只是为了拉一个页面,然后检查是否有下一个页面,然后拉那个页面,然后保存总输出,所以知道下一个页面以外的任何内容都是无关紧要的,会极大地浪费我的时间,但知道这一点很好。谢谢你的帮助:)