【发布时间】:2015-04-02 13:28:19
【问题描述】:
我有一个 c# 应用程序,一旦您按下按钮,它就会向 Web API 发送一个 Web 请求并检索所有 Json 值。然后将它们反序列化为一个对象并返回到调用函数的位置。
现在我正在尝试访问从另一个类中的 GetApi 函数返回的对象。
无法将类型“object”隐式转换为“GW2_tradingPost.Listings”。 存在显式转换(您是否缺少演员表?)第 32 行
我知道我做错了,但我不明白什么出了问题。
Form1.cs
private void button1_Click(object sender, EventArgs e)
{
Listings Listings = new Listings();
api_Request api_Request = new api_Request();
Listings richTextBox1 = api_Request.GetApi("https://api.guildwars2.com/v2/commerce/listings/19684");
}
api_Request.cs
public class api_Request
{
public Object GetApi(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
try
{
WebResponse response = request.GetResponse();
using (Stream responseStream = response.GetResponseStream())
{
//StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
//return reader.ReadToEnd();
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
var jsonReader = new JsonTextReader(reader);
var serializer = new JsonSerializer();
return serializer.Deserialize<Listings>(jsonReader);
}
}
catch (WebException ex)
{
WebResponse errorResponse = ex.Response;
using (Stream responseStream = errorResponse.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.GetEncoding("utf-8"));
String errorText = reader.ReadToEnd();
// log errorText
}
throw;
}
}
}
public class Listings
{
[JsonProperty(PropertyName = "id")]
public int Id { get; set; }
public List<Buy> Buys { get; private set; }
public Listings()
{
Buys = new List<Buy>();
}
}
public class Buy
{
[JsonProperty(PropertyName = "listings")]
public int Listings { get; set; }
[JsonProperty(PropertyName = "unit_price")]
public int UnitPrice { get; set; }
[JsonProperty(PropertyName = "quantity")]
public int Quantity { get; set; }
}
我现在使用它来调用对象并在消息框中返回一个值,但它返回的 0 应该是 19684。
api_Request.GetApi("https://api.guildwars2.com/v2/commerce/listings/19684"); MessageBox.Show(Listings.Id.ToString());
【问题讨论】:
标签: c# json object serialization