首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >天气API和JSON

天气API和JSON
EN

Stack Overflow用户
提问于 2016-08-21 21:43:56
回答 2查看 594关注 0票数 0

因此,我正在尝试使用开放气象API:http://openweathermap.org/current

以下是我的javascript代码:

代码语言:javascript
复制
$(document).ready(function() {



if (navigator.geolocation) {
  navigator.geolocation.getCurrentPosition(function(position) {
    $(".ok").html("latitude: " + position.coords.latitude + "<br>longitude: " + position.coords.longitude);
    var ur="http://api.openweathermap.org/data/2.5/weather?lat="+position.coords.latitude+"&lon="+position.coords.longitude+"&appid=18c7e2b6b0150a8f1d2c6b946e065697";
        $.getJSON(ur, function(json) {
        $(".ok2").html(JSON.stringify(json));


        alert(json.weather[main]);

        });

  });
}
});

以下是预期的产出:

代码语言:javascript
复制
{"coord":{"lon":139,"lat":35},
"sys":{"country":"JP","sunrise":1369769524,"sunset":1369821049},
"weather":[{"id":804,"main":"clouds","description":"overcast clouds","icon":"04n"}],
"main":{"temp":289.5,"humidity":89,"pressure":1013,"temp_min":287.04,"temp_max":292.04},
"wind":{"speed":7.31,"deg":187.002},
"rain":{"3h":0},
"clouds":{"all":92},
"dt":1369824698,
"id":1851632,
"name":"Shuzenji",
"cod":200}

输出在我的测试页面中正确显示,但是警报(json.weathermain)不起作用,我想知道如何访问json.id Object.For示例中的特定键,如果我想访问id,下面不应该这样做: json.id;?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-21 21:59:27

json.weather是一个数组:

代码语言:javascript
复制
json.weather = [{"id":804,"main":"clouds","description":"overcast clouds","icon":"04n"}]

数组是一个容器对象,它在Javascript中保存多个类型的值,要访问这些值,必须指定整数索引。

代码语言:javascript
复制
json.weather[0] = {"id":804,"main":"clouds","description":"overcast clouds","icon":"04n"}

json.weather是一个Javascript对象,必须指定属性名,可以通过两种方式访问属性:

  • jsonObject"propertyName“
  • jsonObject.propertyName

所以

只需改变这个:

代码语言:javascript
复制
alert(json.weather[main]);

通过以下方式:

代码语言:javascript
复制
alert(json.weather[0].main);
票数 2
EN

Stack Overflow用户

发布于 2016-08-21 21:54:52

您可以通过两种方式访问JavaScript中的对象的属性。首先,使用点符号:

代码语言:javascript
复制
object.property // after the dot, literally write the name of the property

第二,使用括号:

代码语言:javascript
复制
object["property"] // in the [], put any expression

括号接受任何表达式,并使用该表达式的值作为要访问的属性的名称。因此,编写weather[main]首先计算括号中的表达式:main。这是一个变量名,因此它将计算为main变量的值(或者,如果main不存在,将抛出一个错误)。

如果您想要访问具有固定名称的属性,通常应该使用点表示法。因此,alert(json.weather[main]); 应该是 alert(json.weather.main);**.**那么简单。

如果要访问的属性的名称(a)不是有效的标识符(例如包含特殊字符),或者(b)不固定,例如取决于变量或其他类型,则使用方括号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39069123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档