これをどう表現していいのかわかりませんが、できる限りのことをするつもりです。Web アプリの API を取得し、その JSON 応答をアプリのデータとして使用する C# アプリがあります。ユーザーがボタンをクリックすると、URL から応答が取得され、解析されて使用できるようになります。
var client = new WebClient();
client.Headers.Add("User-Agent", "Nobody");
var response = client.DownloadString(new Uri("http://localhost:45035/api/products/1"));
var responsestring = response.ToString();
JObject o = JObject.Parse(responsestring);
Int32 Id = (int)o["Id"];
string Name = (string)o["Name"];
string Category = (string)o["Category"];
float Price = (float)o["Price"];
string Website = (string)o["Website"];
label1.Text = Name;
label2.Text = "$" + Price.ToString();
label3.Text = "Category: " + Category;
label4.Text = Id.ToString();
それはうまくいきます。問題は、私が何千もの製品を持っている場合、このアプリには、DownloadString Uri だけが変更された、このように何千ものコード ブロックが含まれることです。これを 1 つのクラスに変換して、適切な Uri (例: http://example.com:45035/api/products/1またはhttp://example.com:45035/api/products/2 ) をプラグインできるようにしたいと考えました。、など)そしてそれから名前、カテゴリ、IDなどを取得するので、私のコードはよりきれいになりますが、それを行う方法がわかりません。
私は次のようなものを試しました:
public static object responseinfo(string url)
{
var client = new WebClient();
client.Headers.Add("User-Agent", "Nobody");
var response = client.DownloadString(new Uri(url));
var responsestring = response.ToString();
JObject o = JObject.Parse(responsestring);
Int32 Id = (int)o["Id"];
string Name = (string)o["Name"];
string Category = (string)o["Category"];
float Price = (float)o["Price"];
string Website = (string)o["Website"];
}
jsonfind("http://localhost:45035/api/products/1") を呼び出すことができますが、文字列を取得する方法がわからないため、以前と同じようにテキスト ボックスで使用できます。
以来、このような形になることを願っています。これは私の最初の質問なので、変更する必要がある場合は教えてください。
私が Json.NET を使用している記録については、JSON 応答を処理します。
ありがとう、
ミッチェル