C# 从Json或DataSets提取数据 - 从Python迁移(Json到字典)

0 投票
1 回答
721 浏览
提问于 2025-05-01 07:57

我有一个Python脚本,需要把它转换成C#。这个脚本从一个网址获取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);

根据我在网上看到的,DataSet在你知道里面的数据是什么时效果最好。我只想知道是否有一个叫next_page的字段,如果有的话,它是空的还是有数据。我就是在从DataSet里提取信息时遇到了麻烦。

暂无标签

1 个回答

1

你需要添加一个叫做 JSON.net 的库,这个库可以通过 NuGet 包管理器来获取,链接是 http://james.newtonking.com/json。这个库可以帮助你把 JSON 格式的响应转换成一个字典(或者更好的是,转换成一个新的类),这样你就可以方便地访问这些响应数据。

比如,你可以在引入这个库之后,把下面的代码放到你的 try catch 语句里。

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

另外,你也可以创建一个新的类,专门用来表示你期望的 JSON 数据,然后把 JSON 数据转换成这个类。

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

var responseResult = Newtonsoft.Json.JsonConvert.DeserializeObject<ResponseObject>(response);

撰写回答