1
はじめに:私はJSON.NETについて知っていますが、それを使用することはできません(クライアントマシン)。一意にネストされたJSONの構文解析
http://api.fixer.io/latest?base=USDで返されたJSONを3列、日付、currencyCode、およびレートに解析する必要があります。問題はネストされた「料金」部分にあります。通貨コードは最初の要素の名前です。つまり、「キー」と「値」プロパティを使用できません。私が知っている唯一の方法は、可能な各通貨コードをハードコードすることです。これは現在私が以下のコードに書いているものです。キー/値のペアを使用してコード/レートを同時に引き出したいと考えています。
JSON:これまで
{"base":"USD",
"date":"2016-07-12",
"rates": {
"AUD":1.3101,
"BGN":1.7633,
"BRL":3.2829,
"CAD":1.3029,
etc....}
}
マイコード:
私は返すようにしようとしています何static void Main(string[] args)
{
var curDate = "2001-01-01";
var URL = @"http://api.fixer.io/" + curDate + "?base=USD";
Console.WriteLine(URL);
//WebRequest wrGetURL = WebRequest.Create(URL);
var text = "";
//wrGetURL.ContentType = "application/json; charset=utf-8";
HttpWebRequest httpWebRequest = System.Net.WebRequest.Create(URL) as HttpWebRequest;
using (HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse)
{
if (httpWebResponse.StatusCode != HttpStatusCode.OK)
{
throw new Exception(string.Format("Server error (HTTP {0}: {1}).",
httpWebResponse.StatusCode, httpWebResponse.StatusDescription));
}
Stream stream = httpWebResponse.GetResponseStream();
DataContractJsonSerializer dataContractJsonSerializer = new DataContractJsonSerializer(typeof(JSONRead));
JSONRead objResponse = (JSONRead)dataContractJsonSerializer.ReadObject(stream);
Console.WriteLine(objResponse.rates.AUD);
}
Console.ReadLine();
}
[DataContract]
public class JSONRead
{
[DataMember(Name = "date")]
public string date { get; set; }
[DataMember(Name = "rates")]
public Rates rates { get; set; }
[DataMember(Name = "base")]
public string bases { get; set; }
}
[DataContract]
public class Rates
{
[DataMember(Name = "AUD")]
public string AUD { get; set; }
//[DataMember(Name = "key")]
//public string key { get; set; }
//[DataMember(Name = "value")]
//public string value { get; set; }
}
:
Date Code Rate
2016-07-12 AUD 1.3101
2016-07-12 GBN 1.7633
etc...
辞書としてのレートを定義する – Plutonix
@Plutonixは無知を許していますが、そのコードはどのように見えますか?私はリストを使用して他の例を見たが、APIコールから何も返されませんでした。 – TTeeple