反序列化Json遇到URL更改

时间:2014-07-15 10:07:43

标签: json facebook-graph-api url json.net

我有一个由facebook api返回的Json字符串,我想将它转换为一个对象,我尝试使用Newton Json和JavaScriptSerializer。

https://graph.facebook.com/v1.0/1111111111111/comments?limit=25&after=NTA\u00253D

将其强制转换为强类型对象或动态对象后,该网址将更改为

https://graph.facebook.com/v1.0/1111111111111/comments?limit=25&after=NTA%3D

这个问题的原因是什么?

我尝试过编码和解码,但是没有用。

1 个答案:

答案 0 :(得分:1)

在JSON中,任何字符都可以由unicode转义序列表示,该序列定义为\u后跟4个十六进制数字(请参阅JSON.org)。反序列化JSON时,每个转义序列都被实际的unicode字符替换。如果您运行以下示例程序,您可以自己查看:

class Program
{
    static void Main(string[] args)
    {
        string json = @"{ ""Test"" : ""\u0048\u0065\u006c\u006c\u006f"" }";
        Foo foo = JsonConvert.DeserializeObject<Foo>(json);
        Console.WriteLine(foo.Test);
    }
}

class Foo
{
    public string Test { get; set; }
}

输出:

Hello

在您的示例网址中,\u0025代表%字符。所以这两个URL实际上是等价的。这里没有问题。