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

标签 c# asp.net json

我正在尝试使用 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

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

最佳答案

假设动态对象被正确填充你可以在网页中使用它的内容 例如,如果 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?

关于c# - 在 aspx 网页上使用 JsonObject 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15680301/

相关文章:

c# - 如何配置 Visual Studio Code 以从适用于 Linux 的 Windows 子系统 (WSL) 运行/调试 .NET (dotnet) Core?

c# - 使用 C# 正则表达式如何将竖线匹配为文字?

javascript - 处理嵌套 JSON 数据时避免嵌套 every 循环

jquery - 为 AJAX 创建 JSON 字符串

asp.net - .Net Standard 2.0 类库是否有通用配置文件?

python - SQLAlchemy:过滤存储在 JSONB 字段的嵌套列表中的值

c# - 在 C# 中捕获和发送键盘/鼠标输入

c# - 如何在同一个 ListView 中拖放项目?

asp.net - 表单例份验证 Web 表单 错误消息 401.2 访问被拒绝

c# - 如何在单个存储过程中从多个表中获取数据?