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

时间:2014-11-03 14:48:39

标签: c# python json dictionary dataset

我有以下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);

根据我在网络上看到的内容,当您知道其中的数据内容时,DataSet最有效。我只是想知道是否有一个名为next_page的字段,如果有,是空的还是有数据。我只是在努力从DataSet中获取任何东西。

1 个答案:

答案 0 :(得分:1)

您需要包含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);