我正在尝试使用声称返回JSON的Web服务,但实际上总是返回JSONP.我没有看到改变该服务行为的方法.
我想用NewtonSoft Json.Net来解析结果.我已经声明了一个类,我们将其称为MyType,我想将内部JSON结果反序列化为.
JSONP:
parseResponse({
"total" : "13,769",
"lower" : "1",
"upper" : "20"})
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这不是正确的JSON,因为它具有parseResponse(前缀和)后缀.虽然这个例子非常简单,但实际响应可能很长,大约为100K.
我的风格:
public class MyType
{
public Decimal total;
public int lower;
public int upper;
}
Run Code Online (Sandbox Code Playgroud)
在我将Web服务响应转换为流和JsonTextReader之后,我尝试反序列化,如下所示:
(MyType)serializer.Deserialize(jsonTextReader, typeof(MyType));
Run Code Online (Sandbox Code Playgroud)
当然,我得到null的结果,因为有圆括号的那个讨厌的parseResponse.
我看过这个问题,遗憾的是没有帮助.我实际上是使用a JsonTextReader来输入JSON而不是字符串(并且更喜欢这样以避免创建巨大字符串的性能).即使我使用该问题的建议,它看起来很危险,因为它使用全局替换.如果没有好的方法来使用流,那么安全解析字符串的答案就可以了.