关键字Android [JSON解析,]
代码都是测试过了的,小改一下就可以直接用
一:Json解析
//注意json格式
String str1="{"testKey":[{\"A\":123},{\"A\":1234},{\"A\":12345}]}";
JSONObject _J;
try {
_J = new JSONObject(str1);
JSONArray ja = _J.getJSONArray("testKey");
int num = ja.length();
for(int i=0;i<num;i++){
String a = ja.getJSONObject(i).getString("A");
System.out.println("A is:::"+a);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
结果
System.out A is:::123
System.out A is:::1234
System.out A is:::1235
对于JSON格式可能是这样的:注意格式!
String str2="[{\"A\":123},{\"A\":1234},{\"A\":12345}]";
解析方式为:
try {
JSONArray ja = new JSONArray(str2);
System.out.println("数组长度:"+ja.length());
for(int i=0;i<ja.length();i++){
JSONObject jo = (JSONObject)ja.opt(i);
double db = jo.getDouble("A");
System.out.println("得到数据::"+db);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
二:Android数组使用
声明=>初始化(必须知道数组长度来分配空间)
随便选个double测试类型
double lats[]=null;//声明
1) lats = new double[3];
2) lats = new double[]{1.1, 2.2, 3.3};//这样就打了个擦边球,在数据到来最后一刻初始化,数据无限添加,有点无限数组味道,和3异曲同工
new double[]{};//等于new double[0];//分配一个长度为0的空间
int m = data.length;//得到数据长度
3) lats = new double[m];
除了上面三种初始化方法,要想真正实现无限增长的数组,需使用List或是vector(关于这两个区别相信一堆人在讨论,随便找个链接)
现在就简单介绍一下List使用
List<Double> dd = new ArrayList<Double>();
dd.add(12.31);
dd.add(12.32);
dd.add(12.33);
dd.add(12.34);
System.out.println("1 Length is::"+dd.size());//3
这样就不用有长度限制了,不用再厌烦outOfBounds了
更多操作说明
遍历 for(Iterator<A> it = list.iterator(); it.hasNext(); ) { // 并发 删除一个无素注意it.remove不能用list.remove(出错)/ 锁定,性能稍差
遍历 for(int i=0; i<list.size(); i++) { //内部不锁定, 效率高, 多线程时要考虑并发操作的问题
dd.clear() //清除所有数据
dd.isEmpty();//是不是无数据,为空的
dd.get(0);//得到第一个数据 //举一反三
dd.remove(1);//删除第2个元素,0为第一//删除后,后续索引跟进!取值get(1)时就是删除前的下一个元素!不这样,露个空子,还不出错啊,很合理
dd.lastIndexOf(12.34);//找12.34的这值,如有1个或多个,取最大索引!一定要注意数据类型,若写成"12.34"是字符串,将返回-1表示未找到!
dd.size();//这个dd总共有多少个数据呢
dd.toArray();//将list转成array,如果你更擅长操作数组的话
先就介绍这几个,更多的还没测试用到~多查查
三: