android用java处理二维json数组并放入listview中。 50
如何把这个三条记录放到listview中,就是说一个listview中有四个数据,两个数据放一行。
最好用post的方法,网上的用的传递的josn数组全是一维的,这个实在不会弄。新手,求代码。
其实我昨天晚上已经实现了我的思路,得到了json数组。方法是用了jsonarray代替jsonobject.不过你还是写完吧,也给我个思路。顺便问下,我用post传过去的中文老乱码。我用php的urlencode编码传数据回来在java中用urldecoder.decoder(data,"gbk")可以传递中文过来。但是反过来却不行,在java中用urlencoder.encoder(data),到php中却用urldecode(data)(php的这个函数不能设置编码格式唉)却得不到值。这个要怎么解决啊? 展开
用谷歌提供的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包还可以实现网络图片缓存显示,方法很简单,在我贴出的网址里面就有教程