私はRestSharp呼び出しからJSON戻り値を逆シリアル化しようとしています。RestSharpのAPI呼び出しからJSONの戻り値をオブジェクトの配列に逆シリアル化する方法はありますか?
これはC#コンソールアプリケーションです。ここに私のコードは、これまでです:
using System;
using RestSharp;
using RestSharp.Authenticators;
using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
using RestSharp.Deserializers;
using System.Collections.Generic;
namespace TwilioTest
{
class Program
{
static void Main(string[] args)
{
var client = new RestClient("https://api.twilio.com/2010-04-01");
var request = new RestRequest("Accounts/{{Account Sid}}/Messages.json", Method.GET);
request.AddParameter("To", "{{phone number}}");
request.AddParameter("From", "{{phone number}}");
client.Authenticator = new HttpBasicAuthenticator("{{account sid}}", "{{auth token}}");
var response = client.Execute(request);
var jsonResponse = JsonConvert.DeserializeObject(response.Content);
Console.WriteLine(jsonResponse);
}
}
}
応答が"to"
、"from"
、"body"
、そして"status"
などのキーを使用して、メッセージのJSON形式のリストです。
class Message
{
public string To { get; set; }
public string From { get; set; }
public string Body { get; set; }
public string Status { get; set; }
}
私は周りを探してきた。このようになりますMessage
クラスで、
{
"to": "{{phone number}}",
"from": "{{phone number}}",
"body": "Sent from your Twilio trial account - Message 1!",
"status": "delivered"
},
{
"to": "{{phone number}}",
"from": "{{phone number}}",
"body": "Sent from your Twilio trial account - Message 2",
"status": "delivered"
},
私はMessage
オブジェクトの配列にそれを有効にする:ここではそれがどのように見えるかのようなものですJSONをオブジェクトに変換する方法については、http://blog.atavisticsoftware.com/2014/02/using-restsharp-to-deserialize-json.htmlをご覧ください。ページの3番目の例は、私が望む行に沿っています。
私は、プログラムに変更を加え、今では、次のようになります。
class Program
{
static void Main(string[] args)
{
// same as above until this point
...
var response = client.Execute(request);
JsonDeserializer deserial = new JsonDeserializer();
var messageList = deserial.Deserialize<List<Message>>(response);
foreach (Message element in messageList)
{
Console.WriteLine("To: {0}", element.To);
Console.WriteLine("From: {0}", element.From);
Console.WriteLine("Body: {0}", element.Body);
}
Console.ReadLine();
}
}
私はプログラムを実行するときしかし、messageList
は空です。 JSONレスポンスをオブジェクトのリストにするには何が欠けていますか? RestSharp Documentationはそれをかなり簡単に見せます。
をresponseContentは '{" key1 ":" value1 "、" key2 ":" value2 "...}'のような文字列です。プログラムがDeserializeObject行にヒットすると、JsonSerializationExceptionが発生します。「型をJSON配列で正しく逆シリアル化する必要があるため、現在のJSONオブジェクトを型に逆シリアル化できません。私は、JSON文字列を配列に変換するためにオンラインで見つかったいくつかのことを試しましたが、エラーが続いています。正しくデシリアライズするには、JSONのすべてのキーについてメッセージクラスにプロパティが必要ですか? – jmk22
jsonを投稿できますか? – Thomas
私はそれを理解しました.Jsonの応答は多くのプロパティを持ち、そのうちの1つはメッセージのリストでした。メッセージオブジェクトのリストにレスポンス全体を逆シリアル化しようとすると、メッセージのJSONレスポンスではないため、エラーが発生しました。 – jmk22