我正在制作一个使用Reddit的API从子Reddit获取帖子的应用
但是每次我得到的JSON都有\“而不是”
我尝试了三种不同的方法从Reddit的网站下载JSON,但是每次使用\“填充时,我的反序列化器都无法处理
var json = get_json("https://www.reddit.com/r/" + "memes" + "/new.json?sort=new&limit=1");
string webData = json.Replace('\"', '"');
MessageBox.Show(webData, "");
NormalInput normal = JsonConvert.DeserializeObject<NormalInput>(webData);
public string get_json(string url)
{
Uri uri = new Uri(url);
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Get;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string output = reader.ReadToEnd();
response.Close();
return output;
}
我希望json.Replace()或get_json()的输出没有任何\“,但是我到处都可以找到它们
答案 0 :(得分:4)
这是一个使用动态和基本WebClient的完整工作示例:
using System;
using Newtonsoft.Json;
using System.Net;
public class Program
{
public static void Main()
{
var client = new WebClient();
var url = "https://www.reddit.com/r/" + "memes" + "/new.json?sort=new&limit=1";
var json = client.DownloadString(url);
dynamic output = JsonConvert.DeserializeObject<dynamic>(json);
Console.WriteLine(output.data.children[0].data.title);
}
}
当前输出:
This meme is not dead!
要与reddit进行交互,也许您应该依赖C#reddit客户端库。选中nuget。
如果您想继续使用自制解决方案(以获取乐趣和学习),可以使用HttpClient
代替旧的(但简单的)WebClient
来改善此快速解答,并从JsonConvert.DeserializeObject
在实际类中的动态用法(我写了answer to achieve that。尝试一下^^)。如果您的类NormalInput
与json匹配,请继续使用它。
答案 1 :(得分:0)
我看到您尝试从URI下载JSON。使用NewtonSoft是从URI获取json的好方法。
请看一下这篇文章:https://www.codeproject.com/Tips/397574/Use-Csharp-to-get-JSON-Data-from-the-Web-and-Map-i