c# - 如何用\"修复JSON?

标签 c# json api

我正在制作一个使用 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() 的输出没有任何\",但我到处都得到它们

最佳答案

这是一个使用动态和基本 WebClient 的完整工作示例:

Try it online

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来改进此快速答案。 code> 并从 JsonConvert.DeserializeObject 的动态使用切换到真实的类(我写了一个 answer to achieve that 。试试吧 ^^)。如果您的类 NormalInput 与 json 匹配,请继续使用它。

关于c# - 如何用\"修复JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57250589/

相关文章:

javascript - 在浏览器中查看 WordPress 插件请求的数据?

api - Symfony 2 - FOSUserBundle - 如何集成到 API 中

javascript - javascript 中的 gunzip

c# - 子类是否可以覆盖基类的属性?

c# - "Object has been disconnected or does not exist at the server"异常

c# - 如何在 ETW EventSource 中定义名称层次结构?

php - 将 .JSON 导入 MySQL

java - 使用 Jackson 进行 JSON 解析 - 跳过值

api - Java中stream.max(Comparator)和stream.collect(Collectors.maxBy(Comparator)的区别

c# - 如何在 asp.net c# 应用程序中放置一个可选的文件上传按钮?