2011-11-30 65 views
1

我有一个读取函数显示来自HTML5的WEBSQL的SELECT查询的内容。我想重用该功能,但我有问题,因为我得到的是一个JSON对象数组,我想将其转换为rows.item(),所以有谁知道这是如何工作的?

例子,我有这样的JSON阵列

"retdic":[{"row_index":0,"lname":"Mato","age":26,"gender":"M","pic":"cyborg.jpg","fname":"Shibiru"}, 
      {"row_index":1,"lname":"Taro","age":30,"gender":"M","pic":"folder_wrench.png","fname":"Ichigo"}, 
      {"row_index":2,"lname":"Joni","age":27,"gender":"M","pic":"naruto.jpg","fname":"Perez"}, 
      {"row_index":3,"lname":"Sakura","age":24,"gender":"F","pic":"folder_table.png","fname":"Haruka"},    
      {"row_index":4,"lname":"Naruto","age":20,"gender":"M","pic":"naruto.jpg","fname":"Uzumaki"}] 

我怎样才能将它转换为喜欢$ result.rows.item()? item()不是一个数组,如果它是一个数组,它应该是item []。

UPDATE

使用我想通了,如何做到这一点的想法和杰夫的帮助。看看live example

+0

我投了你的问题,因为它帮助我很多,你分享了jeff的想法,它完全为我工作我是从jos数据从ios本地代码传递给Javascript和网页是使用result.rows.item(x)来检索它,这没有伎俩感谢队友 – Talha

+0

我只需要改变一点点var结果=对象(); result ['rows'] = Object(); result ['rows'] ['length'] = jsonResult.length; result ['rows'] ['item'] = function(i){return jsonResult [i]}; – Talha

回答

2

好吧,假设你的数组和item()函数的唯一区别是一个是数组而另一个函数(我假设你使用item()作为“$ result .rows.item(3)“获得第四排),非常简单。 只需定义一个函数,它接受参数i并返回数组中索引为i的项。 所以:

var myItemFunction = function(i) { 
    return retdic[i] 
} 
+0

嗨杰夫谢谢你,这是工作。但我希望该函数像$ result.rows.item()。我试过var $ result.rows.item = function(i){return retdic [i]}但它不起作用。你可以帮我吗? –

+0

嗨,我想通了。谢谢! –

0

你不需要这个对象转换,您可以通过这种方式访问​​您的数据:

$result.retdic[0].lname // 0 - row number 

或循环:

var i,item; 
for (i in $result.retdic) { 
    item = $result.retdic[i]; 
    console.log(item.fname) 
} 

PS:如果您愿意,可以将'retdic'键重命名为'rows'

$res = {"rows":[ 
    {"name": "a"}, 
    {"name": "b"}, 
    {"name": "c"} 
]}; 


var someKey = 'name', 
valueOfSomeKey = $res.rows[rowNumberHere][someKey]; 
+0

谢谢,但这并不完全是什么后即时。但无论如何感谢你的时间爱丽丝卡 –

相关问题