0
は、グリッド・バウンスAPIを送信し、すべての空白ですが、私にこのようなリストを返します:私はJSONをデシリアライズしようとした次のクラスを使用して正しいJSONデシリアライズ後のオブジェクトの数が、彼らは
"[
{\"created\":1487173664,\"email\":\"[email protected]\",\"reason\":\"550 No Such User Here \",\"status\":\"550\"}
,{\"created\":1487169530,\"email\":\"[email protected]\",\"reason\":\"550 Requested action not taken: mailbox unavailable \",\"status\":\"550\"}
,{\"created\":1487095343,\"email\":\"[email protected]\",\"reason\":\"550 Requested action not taken: mailbox unavailable \",\"status\":\"550\"}
,{\"created\":1487093087,\"email\":\"[email protected]\",\"reason\":\"550 Requested action not taken: mailbox unavailable \",\"status\":\"550\"}
,{\"created\":1487085008,\"email\":\"[email protected]\",\"reason\":\"550 Requested action not taken: mailbox unavailable \",\"status\":\"550\"}
,{\"created\":1487082934,\"email\":\"[email protected]\",\"reason\":\"550 Invalid recipient <[email protected]> (#5.1.1) \",\"status\":\"550\"}
]"
を(してみました直列化など[DataMember]
装飾なしで動作W/Oそれ)だけで罰金:
[DataContract(Name = "SendGridBounce")]
public class SendGridBounce
{
[DataMember]
public int Created { get; set; }
[DataMember]
public string Email { get; set; }
[DataMember]
public string Reason { get; set; }
[DataMember]
public string Status { get; set; }
}
[CollectionDataContract(Name = "SendGridBounceList")]
public class SendGridBounceList : List<SendGridBounce>
{
}
そして、これは私がやった方法である:
var client = new SendGridClient("some API key here");
string queryParams = String.Format(CultureInfo.InvariantCulture, "{{ 'end_time': {0}, 'start_time': 1 }}", DateTimeOffset.UtcNow.ToUnixTimeSeconds());
var response = Task.Run(() => client.RequestAsync(SendGridClient.Method.GET, urlPath: "suppression/bounces", queryParams: queryParams)).Result;
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(SendGridBounceList));
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(response.Body.ReadAsStringAsync().Result)))
{
SendGridBounceList bl = js.ReadObject(ms) as SendGridBounceList;
foreach (var b in bl)
{
tbxOutput.Text += b.Created.ToString() + ", " + b.Status + ", " + b.Email + ", " + b.Reason + Environment.NewLine;
}
}
最終的には、SendGridによって返されたJSONと同じ数の項目がリストに含まれていますが、各項目は初期化されていません{0, null, null, null}
。私は間違って何をしていますか?次のように解決策がDataMember
装飾を変更することでした
それはおそらくあなたのプロパティ名のケースです。プロパティは、JSONで小文字になります。 – Amy
@Amy違いはありません – ajeh
@ L.Bもう少し精巧にできますか? – ajeh