1

我正在使用支付模块 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?

4

0 回答 0