【问题标题】:HtmlDecode - you’llHtmlDecode - 你会的
【发布时间】:2013-11-22 02:13:57
【问题描述】:
public static UserItem DownloadJSONString(string urlJson)
{
    using (WebClient wc = new WebClient())
    {
        var json = wc.DownloadString(urlJson);
        UserItem userItems = JsonConvert.DeserializeObject<RootObject>(json);

        return userItems;
    }            
}

我正在处理 Json 文件以反序列化 C# poco 类,如下所示:

var root = JsonConvert.DeserializeObject<RootObject>(json);

我注意到它从 you’ll 转换为 you’ll 我不确定它来自哪里,我查看了浏览器中的 json 文件,它呈现为 you’ll 而不是 you’ll

我尝试了HttpUtility.HtmlDecode,但没有解码。

PS:我不确定这是否有帮助,但我正在使用 Newtonsoft.Json 进行反序列化

【问题讨论】:

    标签: c# json encoding special-characters decoding


    【解决方案1】:

    这可能不是 JSON 解析器特有的问题。

    更有可能,问题在于您如何获得json。这似乎是一个编码问题——也许您正在从使用 Windows-1252 或 ISO-8859-1 编码的文件中读取,但读者将其视为 UTF-8。反之亦然。

    WebClient.DownloadString 使用提供的Encoding 进行此转换。您需要明确设置:

    public static UserItem DownloadJSONString(string urlJson)
    {
        using (WebClient wc = new WebClient())
        {
            wc.Encoding = Encoding.UTF8;
    
            var json = wc.DownloadString(urlJson);
            UserItem userItems = JsonConvert.DeserializeObject<RootObject>(json);
    
            return userItems;
        }            
    }
    

    【讨论】:

    • 我需要什么来解决这个问题?
    • 展示你是如何构建json的。从文件中读取?
    • 我正在传递 url 以读取 json 文件...你看到我的代码了吗?
    • 已更新。希望这对你有用。如果您不确定源编码,您可能需要使用您设置的 wc.Encoding
    • 太棒了!您应该查看用于查询 json 服务的 Microsoft 的 Web API 客户端库——它的组合比 WebClient 好得多。
    猜你喜欢
    • 2021-12-06
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 2012-11-13
    相关资源
    最近更新 更多