Java中数据解析之_JSON(Android官方内置解析器)
2015-08-21 18:54
483 查看
对JSON,我们有如下的两个类:A:对象JSONObject|---构造方法|---JSONObject(Stringsource);把一个String类型的字符串转成JSON对象|---JSONObject(Mapmap);把一个Map集合转成JSON对象|---JSONObject(Objectobj)把obj转成JSON对象|---get(Stringkey)根据键取到值|---getInt(Stringkey)根据键取到Int类型的值|---getString(Stringkey)根据键取到String类型的值|---getDouble(Stringkey)根据键取到Double类型的值|---getJSONObject(Stringkey)得到JSON里面的对象B:数组JSONArray|---构造方法|---JSONArray(Collectioncollection)把一个集合转成JSON数组|---JSONArray(Stringsource)把一个字符串转成JSON数组---这个字符串一定要可转|---getJSONObject(intindex)得到JSON数组下标为index的JSON对象首先,我们对JSONObject进行分析,通过其构造方法,我们可以将一个字符串,Map对象和Object对象转成JSON对象然后通过上面介绍的几个方法对数据进行解析处理:
packagecom.ctgu.classing;
importjava.util.HashMap;
importjava.util.Map;
importorg.json.JSONObject;
publicclassTestJSON{
publicstaticvoidmain(String[]args){
Stringstr="{'name':'Bill','age':25}";
Stringstr1="{people:{'name':'Bill','age':25}}";
Map<String,Integer>map=newHashMap<>();
map.put("zhangsan",35);
try{
//对字符串进行解析(一)
JSONObjectobj=newJSONObject(str);
System.out.print(obj.getString("name")+"");
System.out.println(obj.getString("age"));
System.out.println("-----------我是华丽丽的分割线-----------");
//对字符串进行解析(二)
JSONObjectobj2=newJSONObject(str1);
JSONObjecto=obj2.getJSONObject("people");
System.out.print(o.getString("name")+"");
System.out.println(o.getString("age"));
System.out.println("-----------我是华丽丽的分割线-----------");
//对Map进行解析
JSONObjectobj1=newJSONObject(map);
System.out.println(obj1.toString());
System.out.println("-----------我是华丽丽的分割线-----------");
//对对象进行解析
Peoplep=newPeople("张三",35);
JSONObjectobject=newJSONObject(p);///使用JAVA反射原理{"stu":{}}
System.out.println(object);
}catch(Exceptione){
e.printStackTrace();
}
}
}下面是People类,比较简单!
packagecom.ctgu.classing;
publicclassPeople{
privateStringname;
privateintage;
publicPeople(){
//TODOAuto-generatedconstructorstub
}
@Override
publicStringtoString(){
return"People[name="+name+",age="+age+"]";
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
System.out.println("-----------setAge");
this.age=age;
}
publicPeople(Stringname,intage){
super();
this.name=name;
this.age=age;
}
}贴出运行结果:
Bill25
-----------我是华丽丽的分割线-----------
Bill25
-----------我是华丽丽的分割线-----------
{"zhangsan":35}
-----------我是华丽丽的分割线-----------
{"age":35,"name":"张三"}然后,我们来使用JSONArray对数据进行解析,体会其中的差别!
packagecom.ctgu.classing;
importjava.util.ArrayList;
importjava.util.List;
importorg.json.JSONArray;
importorg.json.JSONException;
importorg.json.JSONObject;
publicclassTestJSON01{
publicstaticvoidmain(String[]args){
Stringstr="{'people':[{'firstName':'Brett','lastName':'McLaughlin','email':"
+"'aaaa'},{'firstName':'Jason','lastName':'Hunter','email':'bbbb'},{"
+"'firstName':'Elliotte','lastName':'Harold','email':'cccc'}]}";
try{
//对上面的数据进行解析
JSONObjectobj=newJSONObject(str);
JSONArrayobj1=obj.getJSONArray("people");
for(inti=0;i<obj1.length();i++){
JSONObjecto=obj1.getJSONObject(i);
System.out.println(o.get("firstName"));
System.out.println(o.get("lastName"));
System.out.println(o.get("email"));
}
System.out.println("-------------华丽丽的分界线--------------");
//将list加入到JSONObject中
List<People>list=newArrayList<>();//[{},{},{}]
list.add(newPeople("zs",88));
list.add(newPeople("ls",77));
list.add(newPeople("ww",66));
list.add(newPeople("zl",55));
JSONArrayarray=newJSONArray(list);
for(inti=0;i<array.length();i++){
System.out.print(array.getJSONObject(i).getString("name")+"");
System.out.println(array.getJSONObject(i).getString("age"));
}
}catch(JSONExceptione){
e.printStackTrace();
}
}
}贴出运行结果:
Brett
McLaughlin
aaaa
Jason
Hunter
bbbb
Elliotte
Harold
cccc
-------------华丽丽的分界线--------------
zs88
ls77
ww66
zl55
相关文章推荐
- android解决同一个界面上ScrollView和百度地图(ListView等可滚动控件)滚动冲突问题
- Android自定义控件<迅雷进度条>
- Android Api Demos登顶之路(四十二)Fragment-->Nesting Tabs
- Android:无法删除DDMS中File Explorer中文件,提示read-only file system
- android 组件AutoCompleteTextView和MultiAutoCompleteTextView实例
- android Listview,gridview局部刷新,部分刷新
- android 组件Spinner组件实例
- Android Train--探索----他山之石,可以攻玉
- android权限管理
- android学习笔记之客户端与服务端保持session登录状态
- Android性能优化典范(三)
- 查看Android SDK 版本
- Android ContentProvider 简单学习
- android开发中与后台通讯中公共参数的解决方案
- Android性能优化典范(二)
- android详情请务必保持手机屏幕不锁屏
- Android性能优化典范(一)
- Android解析xml
- android emoji 表情的制作
- android studio 中aidl文件的使用并且实现跨进程的通信