android怎么解析PHP返回的多维JSON数组格式

问题在于返回的json数据没有这个[]括号,不能解析为jsonArray;服务端写的是数组,变成json发出后,android这边获取的都没有[],而是{}... 问题在于返回的json数据没有这个[ ]括号,不能解析为jsonArray;服务端写的是数组,变成json发出后,android这边获取的都没有[ ],而是{ } 展开
 我来答
崔庆才
2014-11-04 · TA获得超过2741个赞
知道小有建树答主
回答量:657
采纳率:0%
帮助的人:556万
展开全部
首先贴一段示例代码:
<?php
include "con_db.php";//连接数据库
$sql="select * from note order by note_date desc limit ".($index*10).",10"; //sql语句
$result=mysql_query($sql);//获得结果
$note;$i=0; //初始化变量
while($infor=mysql_fetch_array($result))
{
//把结果放到一个一维数组里
$note["id"]=$infor['note_id'];
$note["content"]=$infor['note_content'];
$note["date"]=$infor['note_date'];
$note["username"]=$infor['username'];
//放到二维数组里
$notes[$i++]=$note;
}
echo json_encode($notes );
?>

输出结果:
[{"id":"12","content":"u662f","date":"2014-05-24 09:31:52","username":"u532f"},
{"id":"31","content":"u642f","date":"2014-05-24 09:31:49","username":"u322f"},
{"id":"70","content":"u692f","date":"2014-05-24 09:31:48","username":"u132f"}]

你会发现应该输出的汉字变成了unicode字符集.
这时我们就要用到urlencode的方法,把汉字用urlencode方法编码,转化为json之后再用urldecode解码.看如下例子:
<?php
$h =urlencode("开心");
echo $h;
$x =urldecode($h);
echo $x;
?>

输出结果:
%BF%AA%D0%C4开心

这样通过中间过程的编码和解码,转化成json的过程便不会自动把汉字变成Unicode字符集了.所以最后的方法为:
<?php
while($infor=mysql_fetch_array($re))
{
$note["id"]=$infor['note_id'];//数字不需要编码
$note["content"]=urlencode($infor['note_content']);//汉字需要编码
$note["date"]=$infor['note_date'];
$note["username"]=urlencode($infor['username']);
$notes[$i++]=$note;
}
echo urldecode(json_encode($notes ));//转化成json之后再用urldecode解码为汉字
?>

结果如下:
[{"id":"22","content":"文章","date":"2014-05-24 09:31:52","username":"王"},
{"id":"21","content":"内容","date":"2014-05-24 09:31:49","username":"李"},
{"id":"20","content":"可以","date":"2014-05-24 09:31:48","username":"冯"}]

参考资料:http://cuiqingcai.com/?p=27
ykhotdog
2014-07-23 · 超过46用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:84.1万
展开全部
如果是json数组,就必定有[],否则只是json对象。如果后台PHP返回的json数据是json数组,但是没[],那么必定他那边出错了。都不是json的标准,你怎么解析?
追问
但是他用同样的方法返回的一维数组就有[ ],而且iPhone那边的也没说有问题
追答
那说明本身就不是数组。
php的数组,如果有下标如$p[‘a’]="b";那么他转换成json就是{a:"b"}。是一个json对象,不会最为数组返回的。你就当作json对象逐一解析下去就行了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
找热门电影
2014-07-23 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:70.1万
展开全部
服务器返回应该是 echo json_encode($data)
客户端获取到网络返回的字符串后用
JSONObject jsonObj = (JSONObject)jParser.parse(str);
Object obj = jsonObj .get ("weatherinfo");
JSONObject subObj = (JSONObject)obj ;
String city= (String)subObj .get("city");
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式