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

本文关键字:Json 移植 Python Dict 数据 DataSets 提取 | 更新日期: 2023-09-27 18:28:51

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

# 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);

从我在网上看到的情况来看,当你知道里面的数据是什么时,数据集的工作效果最好。我只想知道是否有一个名为next_page的字段,如果有,它是空的还是有数据。我只是在努力从数据集中获取任何内容。

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

您将希望包含JSON.net nuget包(http://james.newtonking.com/json)这允许您将JSON响应反序列化到字典(或者最好是一个新类)中,从而允许您访问响应。

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

var dict = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(response);

或者,您可以创建一个表示预期JSON的新类,并将其反序列化为

public class ResponseObject
{
    public string next_page { get; set; }
}
var responseResult = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseObject>(response);