问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-10 01:00

我来回答

3个回答

热心网友 时间:2022-04-10 02:29

首先贴一段示例代码:
<?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

热心网友 时间:2022-04-10 03:47

如果是json数组,就必定有[],否则只是json对象。如果后台PHP返回的json数据是json数组,但是没[],那么必定他那边出错了。都不是json的标准,你怎么解析?追问但是他用同样的方法返回的一维数组就有[ ],而且iPhone那边的也没说有问题

追答那说明本身就不是数组。
php的数组,如果有下标如$p[‘a’]="b";那么他转换成json就是{a:"b"}。是一个json对象,不会最为数组返回的。你就当作json对象逐一解析下去就行了

热心网友 时间:2022-04-10 05:22

服务器返回应该是 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");
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 华为在线客服? 华为手机在线服务网址是多少啊? 花社区怎么登录 sorrtohearthat是什么意思 I’m sorry for hear that这句话错在哪? have you heard that 和 did you hear that是什么区别? I am happy( )hear that steve,l,hear that i heard that 后面为什么用现在进行时? 佳能70d全自动照片不清楚怎么办 剁椒鱼头做法大全视频 I heard that 句型后面要接什么时态? 佳能70D 8-200镜头,刚到测试,智能自动拍摄 ETL 如何找增量数据 总结 i hear that 为什么不是过去时 Iheardthat句型后面要接什么时态 听说 Hearing that.还是Heard that... I heard that和 I have heard that 有什么区别? I heard that 和I heard 的区别 听说 Hearing that.....还是Heard that...? 怎样把一个htm文件转换成一个网址 怎么把MP3文件转换成网址形式? 如何把EXE文件转换成网址下载? 求一个才可以把EXE文件,转换成网址形式的......(什么方法可以)? 如何将电脑里的歌曲文件转换成网址(即URL) win8.1怎么打开控制面板 win8.1怎么快速找到控制面板 献血证借给别人后影响自己以后的使用吗? 女婿是亲属吗 我的献血证给别人用了以后我还能用嘛 windows8.1控制面板在哪 如何让微信的好友自动加我? win8.1控制面板在哪 献血证可以给别人使用么? 格式转换.可以转换网址的. win8.1怎么打开nvidia控制面板 win8.1如何打开英伟达控制面板 快手上有人私信你说要帮助你扶持你推流是真是假 为什么快手一打开私信页面就是推荐关注? 快手私信今天来过是什么意思 为什么我的电脑在开始菜单栏里打不开控制面板呢,Win8.1系统来的!