无法将反序列化的json放入gridview

时间:2019-01-26 15:54:51

标签: c# json

由于无效的数据类型,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();
}

1 个答案:

答案 0 :(得分:0)

我不确定100%,但是您的数据源不是列表。正如您在代码中看到的那样,您正在反序列化将Json返回为CryptoPrice类型的一个实例。尝试将其反序列化为List<CryptoPrice>并将其作为数据源分配给网格视图。