title: Expected to decode Array<Any> but found a dictionary instead
body: <p>I was fetching data from an API returning an array but needed to replace it by an API that has "sub levels":</p>
  
  <pre><code>RAW:
      ETH:
          USD:
               TYPE:              "5"
               MARKET:            "CCCAGG"
               FROMSYMBOL:        "ETH"
               TOSYMBOL:          "USD"
               PRICE:             680.89
               CHANGEPCT24HOUR    :   -9.313816893529749
  </code></pre>
  
  <p>Here is my struct:</p>
  
  <pre><code>struct Ethereum: Codable {
  
      let percentChange24h: String
      let priceUSD: String
  
      private enum CodingKeys: String, CodingKey {
          case priceUSD = "PRICE", percentChange24h = "CHANGEPCT24HOUR"
      }
  }
  </code></pre>
  
  <p>And the implementation:</p>
  
  <pre><code>    func fetchEthereumInfo(completion: @escaping (Ethereum?, Error?) -&gt; Void) {
      let url = URL(string: "https://min-api.cryptocompare.com/data/pricemultifull?fsyms=ETH&amp;tsyms=USD")!
  
      let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
          guard let data = data else { return }
          do {
              if let ethereumUSD = try JSONDecoder().decode([Ethereum].self, from: data).first {
                  print(ethereumUSD)
                  completion(ethereumUSD, nil)
              }
          } catch {
              print(error)
          }
      }
      task.resume()
  }
  </code></pre>
  
  <p>The console prints <code>typeMismatch(Swift.Array&lt;Any&gt;, Swift.DecodingError.Context(codingPath: [], debugDescription: "Expected to decode Array&lt;Any&gt; but found a dictionary instead.", underlyingError: nil))</code></p>
  
  <p>I can't really figure out what to update in my code or what this form of API is</p>