私はC#を初めてお使いになりました。JSONをGETリクエストからC#Winformsアプリケーションのテキストボックスに変換してください。
会社に関する情報を得るために会社のハウスAPIを利用するコード(下記)を書きました。情報はJSON形式で返されます。
私が必要とするのは、特定の情報を取って、すでにフォーム上にあるテキストボックスに入れます。私が書いたコードは、メッセージボックスに戻すことができますが、テキストボックスに入力する方法を考えることはできません。私は次の私のコードを更新しました
{
"accounts":{
"accounting_reference_date":{
"month":"12",
"day":"31"
},
"last_accounts":{
"type":"group",
"made_up_to":"2015-12-31"
},
"next_made_up_to":"2016-12-31",
"next_due":"2017-09-30",
"overdue":false
},
"company_number":"08867781",
"annual_return":{
"last_made_up_to":"2016-06-20",
"overdue":false
},
"jurisdiction":"england-wales",
"has_been_liquidated":false,
"date_of_creation":"2014-01-29",
"undeliverable_registered_office_address":false,
"company_name":"VIRGIN ATLANTIC LIMITED",
"registered_office_address":{
"address_line_2":"Fleming Way",
"locality":"Crawley",
"country":"United Kingdom",
"region":"West Sussex",
"address_line_1":"Company Secretariat - The VHQ",
"postal_code":"RH10 9DF"
},
"type":"ltd",
"last_full_members_list_date":"2016-06-20",
"sic_codes":[
"70100"
],
"has_insolvency_history":false,
"etag":"cbab10bb8b9dc1db442cb585a63ae208c1265100",
"company_status":"active",
"has_charges":false,
"previous_company_names":[
{
"name":"VIRGIN ATLANTIC (HOLDINGS) LIMITED",
"effective_from":"2014-01-29",
"ceased_on":"2014-05-30"
}
],
"confirmation_statement":{
"next_made_up_to":"2017-06-20",
"overdue":false,
"next_due":"2017-07-04"
},
"links":{
"self":"/company/08867781",
"filing_history":"/company/08867781/filing-history",
"officers":"/company/08867781/officers"
},
"registered_office_is_in_dispute":false,
"can_file":true
}
** UPDATE **
:
private void getFromCompaniesHouse(object sender, EventArgs e)
{
try
{
//Compile request url
string url = "https://api.companieshouse.gov.uk/company/" + txtCompanyNumber.Text;
// Encode API key to ASCII
string api_key = "yfhOb66cRn7ZL1VgdFjVur5cs8u6j__bcNnKj9Qs:";
string encodedKey = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(api_key));
// Make get request using url and encoded API key
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Headers.Add("Authorization", "Basic " + encodedKey);
request.ContentType = "application/json; charset=utf-8";
var response = (HttpWebResponse)request.GetResponse();
var rawJson = new StreamReader(response.GetResponseStream()).ReadToEnd();
var json = JObject.Parse(rawJson); //Turns your raw string into a key value lookup
string company_name = json["company_name"].ToObject<string>();
txtBusinessName.Text = company_name;
}
catch
{
MessageBox.Show("Cannot Make Request", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
私は物事を引くことができますJSONが返さ
private void getFromCompaniesHouse(object sender, EventArgs e)
{
try
{
//Compile request url
string url = "https://api.companieshouse.gov.uk/company/" + txtCompanyNumber.Text;
// Encode API key to ASCII
string api_key = "yfhOb66cRn7ZL1VgdFjVur5cs8u6j__bcNnKj9Qs:";
string encodedKey = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(api_key));
// Make get request using url and encoded API key
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Headers.Add("Authorization", "Basic " + encodedKey);
request.ContentType = "application/json; charset=utf-8";
var response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
MessageBox.Show(streamReader.ReadToEnd());
}
}
catch
{
MessageBox.Show("Cannot Make Request", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
は次のようになりますRootObject
クラスからアクセスしましたが、例えばのようなものにはアクセスできませんクラス。何か案は?
JSONは「特定の情報」がある場合、同じようおよび/またはあなたの場合に見えるものを知らずに手助けするのは難しいですそれを逆シリアル化する方法を理解してください – Plutonix
JSONのために定義された構造体がありますか? – Eric
ここにはいくつかのステップがあります。一般的に、JSONをC#クラス(Google C#deserialize jsonなど)に変換するライブラリを使用したい場合は、通常はテキストを設定するのと同じように、そこから情報を取り出してテキストボックスに貼り付けることができます。 – mmcrae