当前位置: 代码迷 >> JavaScript >> json源
  详细解决方案

json源

热度:140   发布时间:2012-11-04 10:42:41.0
json流
?
  1. function?jsontest() ??
  2. { ??
  3. ????var?json?=?[{'username':'张三','userage':'20'},{'username':'李四','userage':'30'}]; ??
  4. ????alert(json[1].username); ??
  5. ??
  6. ????var?json2?=?[['张三','20'],['李四','30']]; ??
  7. ????alert(json2[0][0]); ??
  8. }??
function jsontest()
{
	var json = [{'username':'张三','userage':'20'},{'username':'李四','userage':'30'}];
	alert(json[1].username);

	var json2 = [['张三','20'],['李四','30']];
	alert(json2[0][0]);
}

这个函数,第一个alert(json[1].username); 会提示 “李四”。 json 变量是一个数组对象。所以要采用 obj.username 这样的格式来调用。

第二个 alert(json2[0][0]);? 会提示 “张三”。 json2变量是完全的一个json格式。 json和json2变量都达到了相同的效果,但json2明显要比json精简了很多。

这是 JavaScriptjson 格式

下面我们来看看php 与json格式。

先来看一段代码

  1. $arr?=?array?( ??
  2. ??array?( ??
  3. ??????'catid'?=>?'4', ??
  4. ??????'catname'?=>?'招聘信息', ??
  5. ??????'meta_title'?=>?'招聘信息标题'??
  6. ????), ??
  7. ??
  8. ????array?( ??
  9. ??????'catid'?=>?'55', ??
  10. ??????'catname'?=>?'php教程', ??
  11. ??????'meta_title'?=>?'php教程标题', ??
  12. ????) ??
  13. ); ??
  14. $jsonstr?=?json_encode($arr); ??
  15. echo?$jsonstr;??
$arr = array (
  array (
	  'catid' => '4',
	  'catname' => '招聘信息',
	  'meta_title' => '招聘信息标题'
	),

	array (
	  'catid' => '55',
	  'catname' => 'php教程',
	  'meta_title' => 'php教程标题',
	)
);
$jsonstr = json_encode($arr);
echo $jsonstr;

这段代码中,$arr是一个数组,我们采用 json_encode 将$arr 转换为了 json 格式 。

这段代码会输出

  1. [{"catid":"4","catname":"\u62db\u8058\u4fe1\u606f","meta_title":"\u62db\u8058\u4fe1\u606f\u6807\u9898"},{"catid":"55","catname":"php\u6559\u7a0b","meta_title":"php\u6559\u7a0b\u6807\u9898"}]??
[{"catid":"4","catname":"\u62db\u8058\u4fe1\u606f","meta_title":"\u62db\u8058\u4fe1\u606f\u6807\u9898"},{"catid":"55","catname":"php\u6559\u7a0b","meta_title":"php\u6559\u7a0b\u6807\u9898"}]

这就是php对于json数据的处理。

对于json数据,php 也可以采用 json_decode()函数将json数据转换成 数组 。

比如 上述代码中,我们采用json_decode函数处理下。又会打印出 上面的数组。

$jsonstr = json_encode($arr);
$jsonstr = json_decode($jsonstr);
print_r($jsonstr);

接下来,我们看看,php json数据和 js json数据如何相互调用。

我们新建一个 php_json.php 文件

代码如下:

  1. ?<?php ??
  2. $arr?=?array?( ??
  3. ?array?( ??
  4. ?'catid'?=>?'4', ??
  5. ?'catname'?=>?'招聘信息', ??
  6. ?'meta_title'?=>?'招聘信息标题'??
  7. ?), ??
  8. ??
  9. ?array?( ??
  10. ?'catid'?=>?'55', ??
  11. ?'catname'?=>?'php教程', ??
  12. ?'meta_title'?=>?'php教程标题', ??
  13. ?) ??
  14. ); ??
  15. $jsonstr?=?json_encode($arr); ??
  16. ?> ??
  17. var?jsonstr=<?=$jsonstr?>;??
 <?php
$arr = array (
 array (
 'catid' => '4',
 'catname' => '招聘信息',
 'meta_title' => '招聘信息标题'
 ),

 array (
 'catid' => '55',
 'catname' => 'php教程',
 'meta_title' => 'php教程标题',
 )
);
$jsonstr = json_encode($arr);
?>
var jsonstr=<?=$jsonstr?>;

补充下,在php_json.php文件末尾? var jsonstr=<?=$jsonstr?>;? 这一句。 这是将json格式的数据赋值给 jsonstr 变量。
我们再建立一个 json.html 文件
代码如下:

  1. <script?type="text/javascript"?src="php_json.php"></script> ??
  2. <script?language="javascript"?type="text/javascript"> ??
  3. function?loadjson(_json) ??
  4. { ??
  5. ?if(_json) ??
  6. ?{ ??
  7. ?for(var?i=0;i<_json.length;i++) ??
  8. ?{ ??
  9. ?alert(_json[i].catname); ??
  10. ?} ??
  11. ?} ??
  12. }? ??
  13. ??
  14. loadjson(jsonstr) ??
  15. </script>??
<script type="text/javascript" src="php_json.php"></script>
<script language="javascript" type="text/javascript">
function loadjson(_json)
{
 if(_json)
 {
 for(var i=0;i<_json.length;i++)
 {
 alert(_json[i].catname);
 }
 }
} 

loadjson(jsonstr)
</script>

这样,我们在查看 json.html的时候,loadjson(jsonstr) 就会 提示 “招聘信息”和“php教程”

这样也实现了js跨域调用。

  相关解决方案