C# 发布Json对象和C
我有一个JSON:C# 发布Json对象和C,c#,json,C#,Json,我有一个JSON: { "BTC_BCN": { "id": 7, "last": "0.00000019", "lowestAsk": "0.00000020", "highestBid": "0.00000019", "percentChange": "0.00000000", "baseVolume": "7.27124323", "quoteVolume": "36958572.58593949", "isFrozen":
{
"BTC_BCN": {
"id": 7,
"last": "0.00000019",
"lowestAsk": "0.00000020",
"highestBid": "0.00000019",
"percentChange": "0.00000000",
"baseVolume": "7.27124323",
"quoteVolume": "36958572.58593949",
"isFrozen": "0",
"high24hr": "0.00000020",
"low24hr": "0.00000019"
},
"BTC_BTS": {
"id": 14,
"last": "0.00001512",
"lowestAsk": "0.00001518",
"highestBid": "0.00001512",
"percentChange": "0.00000000",
"baseVolume": "3.82925362",
"quoteVolume": "253971.93868064",
"isFrozen": "0",
"high24hr": "0.00001525",
"low24hr": "0.00001495"
}
}
…有更多的记录
这是我的模型:
public class GetInfoCoinsPoloniex
{
public int id { get; set; }
public string last { get; set; }
public string lowestAsk { get; set; }
public string highestBid { get; set; }
public string percentChange { get; set; }
public string baseVolume { get; set; }
public string quoteVolume { get; set; }
public string isFrozen { get; set; }
public string high24hr { get; set; }
public string low24hr { get; set; }
}
public class RootPoloniex
{
public GetInfoCoinsPoloniex symbol { get; set; }
}
这是我的控制器:
[Route("api/poloniex")]
[ApiController]
public class PoloniexController : ControllerBase
{
[HttpGet]
public async Task<IEnumerable<GetInfoCoinsPoloniex>> GetCoinsPoloniex()
{
string Baseurl = "https://poloniex.com";
string Parameters = "public?command=returnTicker";
List<GetInfoCoinsPoloniex> CoinsInfoPoloniex = new List<GetInfoCoinsPoloniex>();
using (var client = new HttpClient())
{
//Passing service base url
client.BaseAddress = new Uri(Baseurl);
client.DefaultRequestHeaders.Clear();
//Define request data format
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
//Sending request to find web api REST service resource GetAllEmployees using HttpClient
HttpResponseMessage Res = await client.GetAsync(Parameters);
//Checking the response is successful or not which is sent using HttpClient
if (Res.IsSuccessStatusCode)
{
//Storing the response details recieved from web api
string CoinResponse = Res.Content.ReadAsStringAsync().Result;
CoinsInfoPoloniex = JsonConvert.DeserializeObject<List<GetInfoCoinsPoloniex>>(CoinResponse);
}
return CoinsInfoPoloniex;
}
}
}
我得到了这个错误:
JsonSerializationException:无法反序列化当前JSON对象
e、 g.{name:value}进入类型“System.Collections.Generic.List`1”
因为类型需要JSON数组,例如[1,2,3]来反序列化
没错
我认为我的问题是我没有正确地处理JSON结构。有什么能帮我的吗?。非常感谢 这是一本词典,以下内容可能适合您
CoinsInfoPoloniex = JsonConvert.DeserializeObject<Dictionary<string,GetInfoCoinsPoloniex>>(CoinResponse);
这是一本字典,下面的可能对你有用
CoinsInfoPoloniex = JsonConvert.DeserializeObject<Dictionary<string,GetInfoCoinsPoloniex>>(CoinResponse);
将列表替换为字典,如下所示:
Dictionary<string,GetInfoCoinsPoloniex> CoinsInfoPoloniex = new Dictionary<string,GetInfoCoinsPoloniex>();
CoinsInfoPoloniex = JsonConvert.DeserializeObject<Dictionary<string,GetInfoCoinsPoloniex>>(CoinResponse);
然后按如下方式使用:
Dictionary<string,GetInfoCoinsPoloniex> CoinsInfoPoloniex = new Dictionary<string,GetInfoCoinsPoloniex>();
CoinsInfoPoloniex = JsonConvert.DeserializeObject<Dictionary<string,GetInfoCoinsPoloniex>>(CoinResponse);
将列表替换为字典,如下所示:
Dictionary<string,GetInfoCoinsPoloniex> CoinsInfoPoloniex = new Dictionary<string,GetInfoCoinsPoloniex>();
CoinsInfoPoloniex = JsonConvert.DeserializeObject<Dictionary<string,GetInfoCoinsPoloniex>>(CoinResponse);
然后按如下方式使用:
Dictionary<string,GetInfoCoinsPoloniex> CoinsInfoPoloniex = new Dictionary<string,GetInfoCoinsPoloniex>();
CoinsInfoPoloniex = JsonConvert.DeserializeObject<Dictionary<string,GetInfoCoinsPoloniex>>(CoinResponse);
对@TheGeneral给出的答案再详细解释一下,如果你使用像这样的LINQ
JsonConvert.DeserializeObject<Dictionary<string,GetInfoCoinsPoloniex>>(CoinResponse).Select( o => new GetInfoCoinsPoloniex() { id = o.Key, ...}).ToList();
这将直接从json返回GetInfoCoinsPoloniex对象的列表
编辑:你能接受编辑吗?这样我就可以拿回dv了。我不知道
怎么,我想我错点击了,没有意识到,但仍然是我的
抱歉,兄弟
对@TheGeneral给出的答案再详细解释一下,如果你使用像这样的LINQ
JsonConvert.DeserializeObject<Dictionary<string,GetInfoCoinsPoloniex>>(CoinResponse).Select( o => new GetInfoCoinsPoloniex() { id = o.Key, ...}).ToList();
这将直接从json返回GetInfoCoinsPoloniex对象的列表
编辑:你能接受编辑吗?这样我就可以拿回dv了。我不知道
怎么,我想我错点击了,没有意识到,但仍然是我的
抱歉,兄弟
JSON结构是一个字典/对象,不能像错误所说的那样将其反序列化为数组。尝试反序列化到字典中,而不是将json声明作为对象而不是数组。将父括号{}替换为[],并尝试JSON结构是一个字典/对象,您无法将其反序列化为数组,如错误所示。尝试反序列化到字典中,而不是将json声明作为对象而不是数组。将父括号{}替换为[],并尝试向您表示感谢。正如我们在哥伦比亚所说,你们拯救了祖国。谢谢你抽出时间,非常感谢。正如我们在哥伦比亚所说,你们拯救了祖国。谢谢你抽出时间。