This question already has answers here:
How can I access and process nested objects, arrays or JSON?
(25个答案)
5年前关闭。
我尝试从响应解析Web服务的对象,其结构如下:
因此,我尝试遍历“ array” puntos,然后执行以下操作:
当我打印puntos的值和类型时:
输出:
我的尝试:
如果我打印k值,我会得到(我不知道这是什么意思):
现在如何遍历puntos对象以获取
更新:
上面的代码失败,因为对象
解
(25个答案)
5年前关闭。
我尝试从响应解析Web服务的对象,其结构如下:
{ "idRonda":"1",
"puntos":{
"p1":{"id":1,"descripcion":"punto uno","tag":"0497e1b13e0280"},
"p2":{"id":2,"descripcion":"punto dos","tag":"0498e9b13e0280"},
"p4":{"id":4,"descripcion":"punto cuatro","tag":"04419092432f80"},
"p5":{"id":5,"descripcion":"punto cinco","tag":"0462f812b82a80"},
"p3":{"id":3,"descripcion":"punto tres","tag":"046cfd92432f80"}
}
}
因此,我尝试遍历“ array” puntos,然后执行以下操作:
//data has the response from web service
var json = JSON.parse(data);
var puntos = json.puntos; //until here it's ok
当我打印puntos的值和类型时:
console.log( " Puntos Object : "+ puntos );
console.log( " TypeOf : "+ Ember.typeOf(puntos) );
输出:
Puntos Object : [object Object]
TypeOf : string
我的尝试:
for (var k in puntos)
{
// I thought that k must be "p1", "p2"..., but I'm wrong
if (puntos.hasOwnProperty(k))
{
var values = puntos[k];
var id = values['id'];
}
}
如果我打印k值,我会得到(我不知道这是什么意思):
key: 0
key: 1
.
.
.
key: 13
key: 14
key: fmt
key: w
key: loc
key: camelize
key: decamelize
key: dasherize
key: underscore
key: classify
key: capitalize
key: htmlSafe
现在如何遍历puntos对象以获取
id
,descripcion
和tag
值?更新:
var puntos = json.puntos;
var db = window.sqlitePlugin.openDatabase("Rondas", "1.0", "Dev", -1);
db.transaction(function(tx)
{
tx.executeSql("SELECT * from Punto;", [], function(tx, res)
{
if( res.rows.length === 0)
{
for (var k in puntos)
{
if (puntos.hasOwnProperty(k))
{
var id = puntos[k].id;
var descripcion = puntos[k].descripcion;
var tag = puntos[k].tag;
console.log( "KEY: "+k+" ,ID: "+id + " ,DESCRIPCIÓN: "+descripcion+" ,TAG: "+tag );
}
}
}
}
}
上面的代码失败,因为对象
puntos
失去了作用域,因为它在回调内部,然后只有解决方案才能确保对象上下文。解
db.transaction(function(tx)
{
//ensure the object context.
var points = puntos;
tx.executeSql("SELECT * from Punto;", [], function(tx, res)
{
if( res.rows.length === 0)
{
for (var k in points)
{
...
}
}
}
}
最佳答案
使用这样的for循环
for(key in puntos)
{
var id = puntos[key].id;
var descripcion= puntos[key].descripcion;
var tag = puntos[key].tag;
}
10-08 08:37