加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在aspx网页上使用JsonObject的内容

发布时间:2020-12-15 21:49:22 所属栏目:百科 来源:网络整理
导读:我正在尝试使用HTTP请求从google shopping api返回json字符串的内容.我到目前为止似乎工作但我想知道如何使用对象的内容来显示页面上的数据. public string HttpGet(string url){ HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWeb
我正在尝试使用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返回并在页面上显示的数据.也许这有助于更好地解释我的问题.

https://www.googleapis.com/shopping/search/v1/public/products?key=AIzaSyCC0j59RBeGNtf2W2ft6avhfoTdJ1FQ2c4&country=UK&q=BX80637153570K&rankBy=price:ascending&maxResults=1&alt=json

任何人都可以建议我如何在我的网站上使用这些信息.我现在有点迷失,因为我是这个人的新手,并尝试了几种不同的方法.如果这有所不同,我不需要所有返回的数据吗?只是价格和链接.

解决方法

假设动态obj正确填充,您可以在网页中使用它的内容
例如,如果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类:

Deserialize JSON into C# dynamic object?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读