我有一个由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
这个问题的原因是什么?
我尝试过编码和解码,但是没有用。
答案 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实际上是等价的。这里没有问题。