当前位置: 首页 > 知识库问答 >
问题:

ASP.netmvc API获取请求和JSON数据

苏鸿波
2023-03-14

正在尝试使用asp。net和mvc。

我有一个像这样的< code>Weather类:

public class Weather
{
    public string main { get; set; }
    public string description { get; set; }
}

我用来发出< code>GET请求的方法如下所示:

    async public static Task<List<Weather>> GetWeather()
    {
        List<Weather> weatherData = new List<Weather>();

        HttpClient client = new HttpClient();
        HttpResponseMessage response = await client.GetAsync("http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&APPID=[MYKEY]");

        HttpContent content = response.Content;

        string data = await content.ReadAsStringAsync();
    }

我请求的 URI 返回 JSON 对象。

{
  "coord": {
    "lon": 139,
    "lat": 35
  },
  "weather": [
    {
      "id": 804,
      "main": "Clouds",
      "description": "overcast clouds",
      "icon": "04n"
    }
  ],
  "base": "stations",
  "main": {
    "temp": 299.26,
    "pressure": 1007,
    "humidity": 83,
    "temp_min": 296.15,
    "temp_max": 301.15
  },
  "visibility": 16093,
  "wind": {
    "speed": 5.1,
    "deg": 330,
    "gust": 7.2
  },
  "clouds": {
    "all": 90
  },
  "dt": 1533638820,
  "sys": {
    "type": 1,
    "id": 7618,
    "message": 0.0028,
    "country": "JP",
    "sunrise": 1533585473,
    "sunset": 1533634868
  },
  "id": 1851632,
  "name": "Shuzenji",
  "cod": 200
}

我想访问< code >“Weather”对象,提取属性< code>main和< code>description,并在我的< code>GetWeather中返回一个列表,其中< code>JSON对象的天气属性与我的< code >类Weather中的属性相匹配。

我不知道如何处理字符串<code>data</code>以及如何将JSON数据放入<code>列表

编辑

尝试使用JObject.Parse(),如下面的答案中所述,但收到错误尝试将其打印到控制台时,无法对空引用执行运行时绑定。

async public static Task<List<Weather>> GetWeather()
        {

            HttpClient client = new HttpClient();
            HttpResponseMessage response = await client.GetAsync("http://api.openweathermap.org/data/2.5/weather?lat=35&lon=139&APPID=[MYKEY]");

            HttpContent content = response.Content;

            string data = await content.ReadAsStringAsync();

            dynamic d = JObject.Parse(data);
            var main = d.main.ToString();
            var description = d.description.ToString();

            var weatherData = new List<Weather>
            {
                new Weather { Main = main,
                              Description = description }
            };

            Console.WriteLine(weatherData);

            return weatherData;
        }

共有2个答案

麹权
2023-03-14

你想研究反序列化 json。对于一个例子来说,最简单的方法(尽管不是可维护的)是将json转储到动态中并拉取所需的字段;

dynamic d = JObject.Parse(data);
var description = d.description.ToString();

如果您创建了与JSON匹配的类(看起来您的Weather类不太匹配-main是一个嵌套对象而不是字符串),那么您可以使用JSON.DeserializeObject

马天逸
2023-03-14

从 json 访问描述值的步骤

为给定的json字符串创建模型类,Visual studio为其提供了选项

编辑-

班级看起来像

public class MyClass
{
    public class Coord {
       public int lon { get; set; }
       public int lat { get; set; } }

    public class Weather {
       public int id { get; set; }
       public string main { get; set; }
       public string description { get; set; }
       public string icon { get; set; } }
 ...

使用NewtonSoft.JSON库反序列化json

MyClass temp = JsonConvert.DeserializeObject<MyClass >(jsonString);

现在,您可以通过以下方式访问Weather类的description属性:

string output = temp.Weather.description
 类似资料:
  • 问题内容: 这是我的javascript: 这是我的控制器: spring-servlet.xml 出现此错误: 标头: 响应标题 请求标题 有趣的注意事项: 我收到406错误,但hibernate查询同时起作用。 每当我在保管箱中更改选择时,这就是tomcat日志所说的: 可能是什么问题?之前在SO中有两个类似的问题,我在那里尝试了所有被接受的提示,但是我想它们没有用… 有什么建议么?随意问的问

  • 原理 对于POST请求的处理,koa2没有封装获取参数的方法,需要通过解析上下文context中的原生node.js请求对象req,将POST表单数据解析成query string(例如:a=1&b=2&c=3),再将query string 解析成JSON格式(例如:{"a":"1", "b":"2", "c":"3"}) 注意:ctx.request是context经过封装的请求对象,ctx.

  • 使用方法 在koa中,获取GET请求数据源头是koa中request对象中的query方法或querystring方法,query返回是格式化好的参数对象,querystring返回的是请求字符串,由于ctx对request的API有直接引用的方式,所以获取GET请求数据有两个途径。 1.是从上下文中直接获取 请求对象ctx.query,返回如 { a:1, b:2 } 请求字符串 ctx.que

  • 本文向大家介绍AJAX跨域请求之JSONP获取JSON数据,包括了AJAX跨域请求之JSONP获取JSON数据的使用技巧和注意事项,需要的朋友参考一下 Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索。使用 XMLH

  • 3.1 GET请求数据获取 3.2 POST请求数据获取 3.3 koa-bodyparser中间件

  • 所以,大家好。我在连接到服务器时遇到了一些问题。我曾与Yandex API和VK.COM API合作过,我的方法还不错。但是现在我不能从服务器得到任何响应。我想,我做得不对。 所以网站是https://android-test.7g-demo.com我还有API规范文件。以下是我在其中关于POST请求的内容。 > 请求(应用程序/json; charset=utf-8) > 头 身体 响应 200