2016-07-12 15 views
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... 
+2

辞書としてのレートを定義する – Plutonix

+0

@Plutonixは無知を許していますが、そのコードはどのように見えますか?私はリストを使用して他の例を見たが、APIコールから何も返されませんでした。 – TTeeple

答えて

0

私はDataContractJsonSerializerSettingsを使用していたとするUseSimpleDictionaryFormatを設定true。次に、ネストされたオブジェクトをDictionaryオブジェクトに正しく読み込みます。助けてくれてありがとう@Plutonix。

関連する問題