在aspx网页上使用JsonObject的内容

本文关键字:JsonObject aspx 网页 | 更新日期: 2023-09-27 18:06:12

我试图使用HTTP请求从谷歌购物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&国家= UK& q = BX80637153570K& rankBy =价格:ascending& maxResults = 1, alt = json

谁能告诉我如何在我的网站上使用这些信息?我现在有点迷茫,因为我对这一切都是新的,并尝试了几种不同的方法。如果有区别的话,我不需要所有返回的数据?只要价格和链接。

在aspx网页上使用JsonObject的内容

假设动态对象正确填充,您可以在网页中使用它的内容例如,如果json为:

{
  "error" : {
       "code": 400,
       "message": "Bad Request"
  } 
}

你可以用这样的代码访问对象属性:

Response.Write("Error code is" + obj.error.code);

当然响应。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类可以使用下面的代码创建:

将JSON反序列化为c#动态对象?

我认为你需要deserialize响应

JavaScriptSerializer json_serializer = new JavaScriptSerializer();

您需要创建一个带有响应所产生的属性的类。
输入测试类

 class Test 
 {
   //define a similar property here 
   // which you suppose it will be return in the response   
 }
然后

Test routes_list = (Test)json_serializer.DeserializeObject(yourjson);

编辑1

或者你可以通过这个链接
如何将JSON对象转换为自定义c#对象?