Javascript 如何正确访问JSON数组?
我有一个外部JSON文件,格式为Javascript 如何正确访问JSON数组?,javascript,json,Javascript,Json,我有一个外部JSON文件,格式为{“easy”:[1,14],“hard”:[12,10]}。如何访问json文件的所有元素,以及如何查找其中是否已存在密钥并仅获取该数据。示例:我只想访问与“easy”相关联的值,如何操作?将文件内容读入字符串并使用JSON.parse。使用typeof!='“未定义”以检查对象键: var json = '{ "easy" : [1, 14],"hard":[12, 10]}', var obj = JSON.parse(json); if(typeof ob
{“easy”:[1,14],“hard”:[12,10]}
。如何访问json文件的所有元素,以及如何查找其中是否已存在密钥并仅获取该数据。示例:我只想访问与“easy”相关联的值,如何操作?将文件内容读入字符串并使用JSON.parse
。使用typeof!='“未定义”以检查对象键:
var json = '{ "easy" : [1, 14],"hard":[12, 10]}',
var obj = JSON.parse(json);
if(typeof obj.easy !== 'undefined'){
alert(obj.easy[0]);
}
将文件内容读入字符串并使用
JSON.parse
。使用typeof!='“未定义”以检查对象键:
var json = '{ "easy" : [1, 14],"hard":[12, 10]}',
var obj = JSON.parse(json);
if(typeof obj.easy !== 'undefined'){
alert(obj.easy[0]);
}
将
.contains
或.indexOf
与对象.keys(userscores)
一起使用
使用
.indexOf
使用包含或与对象.key(userscores)
一起使用.indexOf
首先使用.indexOf
,您需要在JavaScript代码中实际获取文件
下面是一个简单的AJAX请求,当接收到JSON时,它会将其转换为JavaScript对象,以便更容易使用:
function ajax() {
var xhr = new XMLHttpRequest(); // for IE7+, Chrome, Safari, Opera
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
var json_object = JSON.parse(xhr.responseText); // takes the response text from the server (the contents of the JSON file) and turns it into a JavaScript object.
}
}
xhr.open("GET", "http://www.myserver.com/my_json.json", true);
xhr.send();
}
首先,您需要在JavaScript代码中实际获取该文件
下面是一个简单的AJAX请求,当接收到JSON时,它会将其转换为JavaScript对象,以便更容易使用:
function ajax() {
var xhr = new XMLHttpRequest(); // for IE7+, Chrome, Safari, Opera
xhr.onreadystatechange = function() {
if(xhr.readyState == 4 && xhr.status == 200) {
var json_object = JSON.parse(xhr.responseText); // takes the response text from the server (the contents of the JSON file) and turns it into a JavaScript object.
}
}
xhr.open("GET", "http://www.myserver.com/my_json.json", true);
xhr.send();
}
假设您的JSON被分配给一个名为userscores
的变量。您可以使用
符号访问JSON中的对象,即用户分数。轻松访问数组[1,14]
var用户分数={
“简单”:[1,14],
“硬”:[12,10]
};
log(userscores.easy);
对于(i=0;i
假设您的JSON被分配给一个名为userscores
的变量。您可以使用
符号访问JSON中的对象,即用户分数。轻松访问数组[1,14]
var用户分数={
“简单”:[1,14],
“硬”:[12,10]
};
log(userscores.easy);
对于(i=0;i
文件名为userscores。所以我会像userscores.easy一样访问它。我知道,但如何检查easy是否已经存在?因为当我像(if(userscores.easy))这样检查它时,我得到的是未定义的文件,您通过AJAX请求检索该文件吗?文件名是userscores。所以我会像userscores.easy一样访问它。我知道,但如何检查easy是否已经存在?因为当我像(if(userscores.easy))这样检查它时,我变得没有定义,你通过AJAX请求检索文件?alert(obj.easy[0])
只返回1
所以alert(obj.easy)
应该足够了,因为OP似乎需要easy
键alert(obj.easy[0]中的所有数据
仅返回1
因此警报(obj.easy)
应该足够了,因为OP似乎需要easy
键中的所有数据。在这里,简单或硬输入由用户给出,并存储在var类型中。所以当我做userscores.input时,它给出了一个错误,因为无法访问undefined.Ah。只需使用userscores[input]
。这里有一个更新的fiddle使用它:假设我想添加一个新的键值对,如“med”:[2,45]。我该怎么做?你是说从外部文件获取数据之后?只需将该属性添加到已解析的对象(userscores
):userscores.med=[2,45]代码>或userscores[“med”]=[2,45]代码>此处,简单或硬输入由用户提供,并存储在var类型中。所以当我做userscores.input时,它给出了一个错误,因为无法访问undefined.Ah。只需使用userscores[input]
。这里有一个更新的fiddle使用它:假设我想添加一个新的键值对,如“med”:[2,45]。我该怎么做?你是说从外部文件获取数据之后?只需将该属性添加到已解析的对象(userscores
):userscores.med=[2,45]代码>或userscores[“med”]=[2,45]代码>