由于无效的数据类型,Gridview无法获取json数据。据我了解,它需要一个List <>数据源。如何使数据填充到gridview中?
从api接收到的JSON
{"BTC":{"SGD":4864.11,"USD":3617.33,"EUR":3162.71}}
...
public class BTC
{
public double SGD { get; set; }
public double USD { get; set; }
public double EUR { get; set; }
}
public class CryptoPrice
{
public BTC BTC { get; set; }
}
...
var webRequest = (HttpWebRequest)WebRequest.Create("https://min-api.cryptocompare.com/data/pricemulti?fsyms=BTC&tsyms=SGD,USD,EUR&api_key=<secret_key>");
var webResponse = (HttpWebResponse)webRequest.GetResponse();
if (webResponse.StatusCode == HttpStatusCode.OK)
{
JavaScriptSerializer json = new JavaScriptSerializer();
StreamReader sr = new StreamReader(webResponse.GetResponseStream());
string resString = sr.ReadToEnd();
CryptoPrice list = json.Deserialize<CryptoPrice>(resString);
GridView1.DataSource = list.BTC;
GridView1.DataBind();
}
答案 0 :(得分:0)
我不确定100%,但是您的数据源不是列表。正如您在代码中看到的那样,您正在反序列化将Json返回为CryptoPrice
类型的一个实例。尝试将其反序列化为List<CryptoPrice>
并将其作为数据源分配给网格视图。