JSONObject 保存和传送 数组数据 ,如int[] ,double[] ,String[]
发布时间:2020-12-16 19:15:21 所属栏目:百科 来源:网络整理
导读:上图为转换后的显示效果。下面介绍如何转换 public class MainActivity extends Activity {private TextView show;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_mai
上图为转换后的显示效果。下面介绍如何转换 public class MainActivity extends Activity { private TextView show; @Override protected 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,"details":"建设路5号"}}," + "{"name":"张三","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 block e.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 block e.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; @Override protected 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 不懂的可以下来看看 都是很基础的 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |