上图为转换后的显示效果。下面介绍如何转换

public class MainActivity extends Activity {private TextView show;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);show = (TextView) findViewById(R.id.show);jsonSendArray();}/** * 用json发送数据 如int [] ,double[] ,String [] .... * 这里是封装并发送 ,方法略显笨拙 */public void jsonSendArray(){int [] dou={1,2,3,4,5,6,7,8,9,0};JSONObject clientKey = new JSONObject(); JSONArray jsonArray = new JSONArray(); //保存数组数据的JSONArray对象for(int i = 0 ; i < dou.length ;i++){  //依次将数组元素添加进JSONArray对象中jsonArray.put(dou[i]);//          两种添加方式一样//try {//jsonArray.put(i, dou[i]);//} catch (JSONException e) {//// TODO Auto-generated catch block//e.printStackTrace();//}      }try {clientKey.put("intArray", jsonArray);//jsonArray相当于int数组        show.setText(clientKey.toString());   //输出测试      } catch (JSONException e) {e.printStackTrace();}}}
下面介绍一些JSONObject 和JSONArray的一些基础用法

/** * 一组数据转换成json * */public  void string2json(){   String str="{\"name\":\"Iyangc\",\"age\":21,\"sex\":'男',\"address\":{\"province\":\"四川\",\"city\":\"成都\"}}";   try {JSONObject jsonObject = new JSONObject(str);String name = jsonObject.getString("name");JSONObject address = jsonObject.getJSONObject("address");String province = address.getString("province");int age = jsonObject.getInt("age");  show.setText("name: "+name+"\nprovince: "+province+"\nage: "+age);   } catch (JSONException e) {e.printStackTrace();} }/** * 数组数据转换json * */public  void json2String(){ String str= "[{\"name\":\"张一\",\"age\":22,\"address\":" +"{\"province\":\"四川\",\"city\":\"成都\",\"details\":\"光明街16号\"}}," +"{\"name\":\"张二\",\"age\":23,\"address\":" +"{\"province\":\"四川\",\"city\":\"成都\",\"details\":\"建设路5号\"}}," +"{\"name\":\"张三\",\"age\":23,\"address\":" +"{\"province\":\"四川\",\"city\":\"成都\",\"details\":\"中山南路8号\"}}]";   try {JSONArray jsonArray = new  JSONArray(str); //将String转换成JsonArray对象      int length=jsonArray.length();      //取出数据 for (int i = 0; i < length; i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); String name = jsonObject.getString("name"); JSONObject jsonObject2 = jsonObject.getJSONObject("address"); String province = jsonObject2.getString("province"); System.out.println(name+"-----------"+province);}} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();} }/** * 以键值对写入json * */public static void jsonArray2String(){JSONArray jsonArray = new  JSONArray();JSONObject jsonObject1= new  JSONObject();JSONObject jsonObject2= new  JSONObject();JSONObject jsonObject3= new  JSONObject();try {jsonObject1 .put("name","Iyangc");jsonObject1 .put("age",21);JSONObject addressObject1 = new  JSONObject();addressObject1.put("province", "四川");jsonObject1.put("address",addressObject1 );jsonObject2 .put("name","ILan");jsonObject2 .put("age",22);JSONObject addressObject2 = new  JSONObject();addressObject2.put("province", "四川简阳");jsonObject2.put("address",addressObject2 );jsonObject3 .put("name","IBo");jsonObject3 .put("age",21);JSONObject addressObject3 = new  JSONObject();addressObject3.put("province", "四川石桥");jsonObject3.put("address",addressObject3 );jsonArray.put(jsonObject1);jsonArray.put(jsonObject2);jsonArray.put(jsonObject3);//打印输出转换成json格式后的String字符串String string = jsonArray.toString();System.out.println(string );} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
就单独用JSON的话 解析起来会显得很麻烦 所以一般要和Gson一起使用。 Gson可以直接将Json类型的字符串转换成类对象,并且对象的属性值与Json的属性值相对应。Gson的一个免费下载地址:http://download.csdn.net/detail/a771948524/6668573

下载后 将其jar包导入工程就可以使用了。下面是Gson的一些基本用法:

public class GsonDemo extends Activity {Ure ure1;Ure ure2;Ure ure3;ArrayList<Ure> ures;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.gson_demo);ures=new ArrayList<Ure>();ure1=new Ure("Iyangc",21);ure2=new Ure("Iyang",22);ure3=new Ure("Iyan",23);ures.add(ure1);ures.add(ure2);ures.add(ure3);//strToJson();// listToJson();// strFromJson(); listFromJson();}/** * 通过Gson将bean转化成JSON数据 * */public void  strToJson(){         Gson g=new Gson();          //通过Gson.toJson将bean转成Json对象         String json = g.toJson(ure1);   System.out.println(json );}/** * 通过Gson.toJson将bean集合转成Json对象 * */public void  listToJson(){Gson g=new Gson();//通过Gson.toJson将bean集合转成Json对象String json = g.toJson(ures);System.out.println(json );}/** * 将JSON格式的数据解析出来~~ * */public void  strFromJson(){Ure ure=new Ure();Gson g=new Gson();String str="{\"name\":\"ILan\",\"age\":22}";//JSONObject json=new JSONObject(str);ure=g.fromJson(str, Ure.class);System.out.println(ure.name+" ======= "+ure.age);}/** * 将JSON格式的数据(集合)解析出来~~ * */public void  listFromJson(){Gson g=new Gson();String str="[{\"name\":\"ILan1\",\"age\":221},{\"name\":\"ILan2\",\"age\":222}]";//JSONObject json=new JSONObject(str);                  Type type = new  TypeToken<List<Ure>>(){  }.getType();                  //将JSON集合数据解析出来                 List<Ure> l=g.fromJson(str,type);       for (Ure ure : l) {       System.out.println(ure.name+" ======= "+ure.age);}}}class Ure{public String name;public int age;  public Ure(String name, int age) {this.name = name;this.age = age;}public Ure() {}}

在JSONObject 传送数组时 可以直接在bean类中定义一个数组 ,只要属性名对应且类型对应 用Gson可直接转换出来,就和基本类型一样。
如果 Ure类中多一个 double[] 数组对象dou, 而且json中有对应数据 那么用Gson将json转换成use对象后 直接 use.dou就能获取这个数组数据。

Demo下载地址: http://download.csdn.net/detail/yangbo437993234/7626045 不懂的可以下来看看 都是很基础的



更多相关文章

  1. Android(安卓)开发笔记——通过 Intent 传递类对象
  2. 浅谈Android(安卓)数据库的使用
  3. 关于自定义无限轮播图_Android
  4. 关于android AbsSeekBar
  5. Android访问远程网页取回json数据
  6. android客户端从服务器端获取json数据并解析
  7. Android使用ksoap2包调用Webservice
  8. 【Android(安卓)应用开发】Activity 状态保存 OnSaveInstanceSta
  9. Android(安卓)当数据库变动时更新UI数据 注册观察者监听

随机推荐

  1. Android(安卓)实现再按一次后退键退出应
  2. asynchttpclient post方法使用
  3. android 多点触摸 实现图片缩放 Image Zo
  4. How to set up a link betwteen a real A
  5. android 按钮的文字显示不全
  6. JS怎样调用Android本地原生方法
  7. Android安装APK时出现Local path doesn't
  8. android activity 相互传值
  9. android 保存bitmap到指定文件
  10. android 控件 3d 旋转效果