android用java处理二维json数组并放入listview中。 50

php后台的json数组已经弄好了(参见http://www.smosz.cn/app/test.php)。如何把这个三条记录放到listview中,就是说一个listv... php后台的json数组已经弄好了(参见http://www.smosz.cn/app/test.php)。
如何把这个三条记录放到listview中,就是说一个listview中有四个数据,两个数据放一行。
最好用post的方法,网上的用的传递的josn数组全是一维的,这个实在不会弄。新手,求代码。
其实我昨天晚上已经实现了我的思路,得到了json数组。方法是用了jsonarray代替jsonobject.不过你还是写完吧,也给我个思路。顺便问下,我用post传过去的中文老乱码。我用php的urlencode编码传数据回来在java中用urldecoder.decoder(data,"gbk")可以传递中文过来。但是反过来却不行,在java中用urlencoder.encoder(data),到php中却用urldecode(data)(php的这个函数不能设置编码格式唉)却得不到值。这个要怎么解决啊?
展开
 我来答
无敌何尝不可
2015-01-26 · TA获得超过567个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:175万
展开全部

用谷歌提供的gson包,或者是阿里巴巴提供的fastjson包,方便快捷。

把javabean的里面的变量的声明和json关键词一样。

比如{"id":"30","title":"��������","num":"3","author":"���B��","lpostt":"2015-01-07 19:33:50"}

javabean就为
public class Bean{
private String id;
private String title;
private String num;
private String author;
private String lpostt;
...//get和set我就不写了
}

fastjson包使用:

import com.alibaba.fastjson.JSONObject;
...
JSONObject object=JSON.parseObject(String);//这是获取一个JSONObject对象使用方法和org.json.JSONObject差不多
//Bean中的变量名必须和返回过来的JSON串里面的参数一样,不一样的变量名将不会有数据。多了或者少了不会有影响。
List<Bean> beanList=JSON.parseArray(String,Bean.class);//JSON数组,解析成一个list
Bean bean=JSON.parseObject(String,Bean.class)//JSON数据,解析成一个对象

如果JSON中的元素还有JSON数据,比如{“id”:{"data","123"}}

public class Bean{
   private Data id;
   ...//省略get和set
}
//下面是另一个javabean文件
public class Data{
private String data;
...//省略get和set
}

解析的办法和上面一样。是json数组就在javabean里面定义list。

使用Gson包和fastjson类似,但是还是有区别

Gson gson=new Gson();//需要先实例化一个Gson对象
Bean bean=gson.fromJson(String,Bean.class);//JSON数据,返回一个Bean对象
List<Bean> beanList=gson.fromJson(String,new TypeToken<List<Bean>>(){}.getType());//JSON数组,返回一个List对象

最后,当你将你的JSON数据解析成了List,难道放入ListView中不就轻而易举了吗?

不知道为什么附件不能上传,你就只能自行下载了。搜一下就出来了

追问
我是新手啊。你这个怎么得到我的网页数据啊,怎么没看到有联网的啊。还有我先是要传递数值给的php后台的,后面还要给出其它的记录呀,这个感觉也做不到唉。再详细点吧。解决了给你加分。
追答

http协议,网上有很多包,比如谷歌提供的Volley包还有xUtils包。

Volley包的使用参考下一个网址

http://blog.csdn.net/t12x3456/article/details/9221611

简单来说,先实例化一个RequestQueue

RequestQueue requestQueue=Volley.newRequestQueue(Context);
//然后向服务器发起请求数据 
requestQueue.add(Request);
//Request有多种子类,比如常用的比如JsonObjectRequest,服务器返回的就是Json串,或者是StringRequest,就是String串。
//拿JsonObjectRequest做例子,
/**
  *参数1:请求方式
  *参数2:请求地址
  *参数3:上传的请求Json
  *参数4:请求正常回调接口
  *参数5:请求发生错误的回调接口
  */
new  JsonObjectRequet(Method.POST,String url,JSONObject,new Listener<JSONObject>(){
//这个方法处理服务器正常返回数据,arg0就是服务器返回的Json串,并且已经转换成了JSON对象
@Override
public void onResponse(JSONObject arg0) {


}
},new ErrorListener(){
//在这个方法里面处理请求发生失败的错误,arg0是返回的信息,按需求进行自行处理
@Override
public void onErrorResponse(VolleyError arg0) {

}
});

注意:1、Volley包使用的时候,可以对请求时间,Session,表头,表单等进行设置,需要的时候可以继承Request来实现自己的Requet返回类。在请求过程中,如果不对超时请求次数和超时时间进行设置,那么最多请求次数会是3次,但是只会收到一次数据。需要细微实现,需要重写Requet

           2、上面那段代码的JSONObject都是org.json.JSONObject,不要和fastjson混淆了

        3、Volley包还可以实现网络图片缓存显示,方法很简单,在我贴出的网址里面就有教程

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式