我正在尝试使用 HTTP 请求从 google shopping api 返回 json 字符串的内容。到目前为止,我所拥有的似乎在工作,但我想知道如何使用对象的内容在页面上显示数据。
public string HttpGet(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
try
{
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream);
return reader.ReadToEnd();
}
}
finally
{
response.Close();
}
}
protected void submit_Click(object sender, EventArgs e)
{
string json = HttpGet("https://www.googleapis.com/shopping/search/v1/public/products?key={KEY}4&country=UK&q=BX80637153570K&rankBy=price:ascending&maxResults=1&alt=json");
dynamic obj = JsonObject.Parse(json);
}
好的,看看响应,我似乎需要一个 C# 类来处理 json 中返回的数据。我使用 json2csharp.com 创建了一个类。这是我需要从 Json 返回并显示在页面上的数据。也许这有助于更好地解释我的问题。
谁能告诉我如何在我的网站上使用这些信息。我现在有点迷茫,因为我是这一切的新手,并且尝试了几种不同的方法。如果这有所作为,我不需要所有返回的数据吗?只是价格和链接。
最佳答案
假设动态对象被正确填充你可以在网页中使用它的内容 例如,如果 json 是:
{
"error" : {
"code": 400,
"message": "Bad Request"
}
}
您可以使用如下代码访问对象属性:
Response.Write("Error code is" + obj.error.code);
当然,Response.Write 只是关于如何将检索到的数据发送到页面的示例。
编辑 1:
问题中使用的 json 转换器似乎无法正常工作或无法正常工作。 在许多情况下,创建一个仅用于解析 json 的具体类是多余的,特别是因为 C# 4 可以使用 ExpandoObject
这是一个关于如何在不需要创建具体对象的情况下反序列化动态对象的示例
var url = "http://www.google.com/ig/calculator?hl=en&q=100USD=?EUR";
string json = HttpGet(url);
//this is json string:
//{lhs: "100 U.S. dollars",rhs: "78.1799703 Euros",error: "",icc: true}
//now convert in a dynamic object
var jss = new DynamicJsonConverter();
var serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new[] { new DynamicJsonConverter() });
dynamic obj = serializer.Deserialize(json, typeof(object));
//now you have access to json content
string text1 = obj.lhs;
string text2 = obj.rhs;
DynamicJsonConverter 类可以使用您可以在此处找到的代码创建:
关于c# - 在 aspx 网页上使用 JsonObject 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15680301/