如何在UPW C#中从Web API反序列化JSON数组?
我想连接到BitBayWebAPI,从那里获取数据JSON并将其保存到文件中。我的JSON如下所示:如何在UPW C#中从Web API反序列化JSON数组?,c#,.net,json,uwp,C#,.net,Json,Uwp,我想连接到BitBayWebAPI,从那里获取数据JSON并将其保存到文件中。我的JSON如下所示: { "status": "Ok", "items": [ { "id": "737a2935-84c9-11ea-8cdc-0242ac11000e", "t": "1587581134890", "a": "0.00926098", "r": "29999", "ty": "Buy" }, {
{
"status": "Ok",
"items": [
{
"id": "737a2935-84c9-11ea-8cdc-0242ac11000e",
"t": "1587581134890",
"a": "0.00926098",
"r": "29999",
"ty": "Buy"
},
{
"id": "6c4474fa-84c9-11ea-8cdc-0242ac11000e",
"t": "1587581122794",
"a": "0.02475367",
"r": "29999",
"ty": "Buy"
}
]
}
我想从中得到t,a,r和ty。我有密码:
public class TradeModel
{
public decimal R { get; set; }
public decimal A { get; set; }
public string Ty { get; set; }
public DateTime T { get; set; }
}
public class TradeItemModel
{
public TradeModel Items { get; set; }
}
public class TradeProcessor
{
public static async Task<TradeModel> LoadTrades( int limit = 1 )
{
string url = "";
if (limit <= 300)
{
url = $"https://api.bitbay.net/rest/trading/transactions/BTC-PLN?limit={ limit }";
}
else
{
}
using (HttpResponseMessage response = await ApiHelper.ApiClient.GetAsync(url))
{
if (response.IsSuccessStatusCode)
{
TradeItemModel trade = await response.Content.ReadAsAsync<TradeItemModel>();
return trade.Items;
}
else
{
throw new Exception(response.ReasonPhrase);
}
}
}
}
公共类交易模型
{
公共十进制R{get;set;}
公共十进制A{get;set;}
公共字符串Ty{get;set;}
公共日期时间T{get;set;}
}
公共类TradeItem模型
{
公共交易模型项{get;set;}
}
公共类交易处理器
{
公共静态异步任务LoadTrades(int limit=1)
{
字符串url=“”;
如果(限制)则TradeItemModel
类中的项应为集合TradeModel[]
或列表
,您还可以添加状态
以检查其是否正常:
public class TradeItemModel
{
public string Status { get; set; }
public List<TradeModel> Items { get; set; }
}
公共类TradeItemModel
{
公共字符串状态{get;set;}
公共列表项{get;set;}
}
您还必须将方法签名更改为:
public static async Task<List<TradeModel>> LoadTrades( int limit = 1 )
公共静态异步任务LoadTrades(int limit=1)
我希望这对您有所帮助。谢谢:)。我还有一个问题,如何在该列表中获取元素,例如,我有按钮和方法,单击我创建变量var tradeInfo=wait TradeProcessor.LoadTrades()的位置;我想在我的文本块中显示trademodel类的R,名称是price?不客气,您有一个包含两个trademodel的集合,所以您需要第一个R或R的总和?第一个R值:trade.Items.first().R
或sum:trade.Items.sum(x=>x.R)
。如果我的答案解决了第一个问题,请您将答案标记为“已接受”好吗?是的,没问题,如果可以,我会给您+1。这就是我的全部。是的,您现在可以,您只需要15个声誉就可以投票。因此,要获得R,我的回答有效吗?使用求和或第一个函数?