我正在使用支付模块 API 来生成令牌。我做了一个 HttpWebRequest,我需要根据我的 [DataContract] 反序列化响应。我面临的问题是响应包含填充“OnCallback”。
`OnCallback(
{"status":201,
"results{
"correlation_id":"124.1493307935056",
"status":"success",
"type":"FDToken",
"token":{
"type":"visa",
"cardholder_name":"JohnSmith",
"exp_date":"1030",
"value":"2305691117118291"}}})`
这就是我在没有填充的情况下反序列化 JSON 所做的。
internal static T DeserializeJSon<T>(string jsonString)
{
T obj;
DataContractJsonSerializer serializer;
serializer = new DataContractJsonSerializer(typeof(T));
using (MemoryStream stream =
newMemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
obj = (T)serializer.ReadObject(stream);
stream.Close();
}
return obj;
}
所以当我这样做的时候
response = request.GetResponse();
dataStream = response.GetResponseStream();
reader = new StreamReader(dataStream);
responseText = reader.ReadToEnd();
try
{
myTokenResponse =
ConsumerFirstData.DeserializeJSon<TokenResponse>(responseText);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
我得到异常:ex.Message =“反序列化 Demo.Json.TokenResponse 类型的对象时出错。遇到意外字符'O'。”
这是我的合同:
public class TokenResponse
{
[DataMember]
public string status { get; set; }
[DataMember]
public Results results { get; set; }
}
public class Results
{
[DataMember]
public string correlation_id { get; set; }
[DataMember]
public string status { get; set; }
[DataMember]
public string type { get; set; }
[DataMember]
public Token token { get; set; }
}
如何将 JSONP 解包为 JSON?或者如何直接反序列化 JSONP?