查看: 2425|回复: 21
|
Javascript如何读取Json
[复制链接]
|
|
根据 http://www.json.org/js.html
可以用 myJSONObject.bindings[0].method 读取以下数据
var myJSONObject = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
以下是由PHP和Sqlite产生的数据.类似上面的数据,只是少了bindings.请问如何读取?
var myJSONObject = {[
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
}; |
|
|
|
|
|
|
|

楼主 |
发表于 8-7-2012 09:19 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 8-7-2012 05:00 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 8-7-2012 08:31 PM
|
显示全部楼层
本帖最后由 cupid25 于 8-7-2012 08:36 PM 编辑
这个不就是普通的array吗?
江田岛平八 发表于 8-7-2012 05:00 PM 
因为没有 key 所以 json parse 不到 |
|
|
|
|
|
|
|
发表于 8-7-2012 08:32 PM
|
显示全部楼层
本帖最后由 cupid25 于 8-7-2012 08:37 PM 编辑
给 complete source 吧。。。我想很简单问题,很多东西要自己研究。。。很普通吧
应该漏了哪里,少了 key 。。。 |
|
|
|
|
|
|
|
发表于 8-7-2012 09:38 PM
|
显示全部楼层
本帖最后由 江田岛平八 于 8-7-2012 09:40 PM 编辑
因为没有 key 所以 json parse 不到
cupid25 发表于 8-7-2012 08:31 PM 
这个不能吗?- document.write(myJSONObject [0].method);
复制代码 |
|
|
|
|
|
|
|
发表于 8-7-2012 09:43 PM
|
显示全部楼层
这个不能吗?
江田岛平八 发表于 8-7-2012 09:38 PM 
能的话他上面就没说很多人问了,你可以自己试看。。。 browser 该出现 invalid bla bla error |
|
|
|
|
|
|
|
发表于 8-7-2012 09:47 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 8-7-2012 09:52 PM
|
显示全部楼层
应该是不难的问题吧,我以前做过很多javascript都有用json的。但不在这部电脑。最主要还是parsing罢 ...
江田岛平八 发表于 8-7-2012 09:47 PM 
是的,不难的问题。。。。只是不懂他哪里弄错吧。。。。也许 php 或哪里。因为他给的只有 output 是那样。 |
|
|
|
|
|
|
|

楼主 |
发表于 8-7-2012 11:29 PM
|
显示全部楼层
本帖最后由 西门庆33 于 8-7-2012 11:34 PM 编辑
回复 9# cupid25
我的资料是使用下面函数生成的 。我的资料库是Sqlite, table里有三个fields: ID, UserName, Password.如果要用Javascript读取谋一个的记录,需要用什么方式呢?
function loadUserPassword() {
global $database, $table, $fieldName;
$myResult = array ();
$query = 'SELECT * FROM '.$table;
$db = new PDO('sqlite:'.$database);
$result = $db->query($query);
foreach($result as $row) {
$myResult[]=array('Id'=>$row['Id'], 'userName'=>$row['userName'], 'userPassword'=>$row['userPassword']);
}
// close the database connection
$db = NULL;
return $myResult;
} |
|
|
|
|
|
|
|
发表于 8-7-2012 11:48 PM
|
显示全部楼层
本帖最后由 wooncherk 于 8-7-2012 11:50 PM 编辑
这个json应该不是valid的json.
尝试run一下以下的code就知道了... :P
<html>
<head>
<script type="text/javascript">
var myJSONObject = {[
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]
};
</script>
</head>
</html>
binding是key来的... 要有key才成立... :) |
|
|
|
|
|
|
|
发表于 9-7-2012 12:00 AM
|
显示全部楼层
西门庆33 发表于 7-7-2012 06:11 PM  - var myJSONObject = {[
- {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
- {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
- {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
- ]};
复制代码
这个是invalid json来的。。因为那个key不见了~
function loadUserPassword() {
global $database, $table, $fieldName;
$myResult = array ();
$query = 'SELECT * FROM '.$table;
$db = new PDO('sqlite:'.$database);
$result = $db->query($query);
foreach($result as $row) {
$myResult[]=array('Id'=>$row['Id'], 'userName'=>$row['userName'], 'userPassword'=>$row['userPassword']);
}
// close the database connection
$db = NULL;
return $myResult;
}
西门庆33 发表于 8-7-2012 11:29 PM 
你的PHP是不是忘记从 array convert去json
array 是 array,json 是 json 不一样
array 会有一个key相对的json也是 |
|
|
|
|
|
|
|
发表于 9-7-2012 02:34 AM
|
显示全部楼层
回复 cupid25
我的资料是使用下面函数生成的 。我的资料库是Sqlite, table里有三个fields: ID, UserName ...
西门庆33 发表于 8-7-2012 11:29 PM 
嗯,上面的两位兄弟已经帮你解答了。。。假如你是用 php array 那么你自己要加 key 进去,尝试如何做吧。。。很简单摆了。看多多 array 就会 |
|
|
|
|
|
|
|

楼主 |
发表于 9-7-2012 11:49 AM
|
显示全部楼层
这个是invalid json来的。。因为那个key不见了~
你的PHP是不是忘记从 array convert去json
a ...
小陈陈 发表于 9-7-2012 12:00 AM 
是的,我在别处才转换。
<?php
$userResult = loadUserPassword();
$jsonString = json_encode($userResult);
?> |
|
|
|
|
|
|
|

楼主 |
发表于 9-7-2012 11:54 AM
|
显示全部楼层
嗯,上面的两位兄弟已经帮你解答了。。。假如你是用 php array 那么你自己要加 key 进去,尝试如何做吧。 ...
cupid25 发表于 9-7-2012 02:34 AM 
我把Key加上去好像不行,应该用错方式吧?
请问如何把Key加上去? |
|
|
|
|
|
|
|
发表于 9-7-2012 05:01 PM
|
显示全部楼层
$myResult['binding']=array('Id'=>$row['Id'], 'userName'=>$row['userName'], 'userPassword'=>$row['userPassword']);
或
$myResult=array('Id'=>$row['Id'], 'userName'=>$row['userName'], 'userPassword'=>$row['userPassword']);
上面比喻的话你的 key 就是 id, userName, userPassword,但第一个做法就用 binding key (multi-dimen)
你测试一下可以不可以 |
|
|
|
|
|
|
|

楼主 |
发表于 9-7-2012 09:44 PM
|
显示全部楼层
$myResult['binding']=array('Id'=>$row['Id'], 'userName'=>$row['userName'], 'userPassword'=>$row['use ...
cupid25 发表于 9-7-2012 05:01 PM 
让我测试後再告诉大家。辛苦各位了。 |
|
|
|
|
|
|
|

楼主 |
发表于 9-7-2012 10:06 PM
|
显示全部楼层
$myResult['binding']=array('Id'=>$row['Id'], 'userName'=>$row['userName'], 'userPassword'=>$row['use ...
cupid25 发表于 9-7-2012 05:01 PM 
我试了,还是不行。 $myResult 和 $myResult['binding'] 都不是动态 array,不会在loop中增加,前面的记录会被下一个记录代替,因此每次只是读取到最后的记录。 |
|
|
|
|
|
|
|
发表于 10-7-2012 01:10 AM
|
显示全部楼层
本帖最后由 cupid25 于 10-7-2012 01:25 AM 编辑
我试了,还是不行。 $myResult 和 $myResult['binding'] 都不是动态 array,不会在loop中增加,前面的记录 ...
西门庆33 发表于 9-7-2012 10:06 PM 
我只是给你 example 解决上面问题吧,你要动态 array 当然不能那么写,你要动动脑精吧如何做不可能我帮你把全部做完对不对?我只是给你 example 如何装 key 当然日后如何造化就的看你如何运用了吧。就如我说的,你要多学习 array。。。因为你不懂如何真正运用,问题在这摆了
其实我知道怎么解决你的疑问,但我不见得该那么给你答案。。。因为我给的答案很接近了,只是 php 有时候要一点点手脚就能做到了。。。因为有时是做不到但换另一种方式也就能了。别学死要灵活掌握,多拿几个钟玩 array 吧。
而且上面大大也跟你说了装 key 就可以也不一定要死死要用 [] 来 auto key 。。。做不到那么就换一种方式来做 |
|
|
|
|
|
|
|

楼主 |
发表于 10-7-2012 08:26 PM
|
显示全部楼层
我只是给你 example 解决上面问题吧,你要动态 array 当然不能那么写,你要动动脑精吧如何做不可能我帮你 ...
cupid25 发表于 10-7-2012 01:10 AM 
明白。我会试试。非常感谢。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|