android 将数据转换成JSON数据格式并使用JSONObject解析JSON格式的数据
2015-04-10 16:22
811 查看
比起XML文件解析,JSON数据解析的有点在于他的体积小,在网络上传输的时候可以更省流量。同时它也有缺点,Json数据的语义性较差,看起来没有XML直观。现在JSON已经被大多数开发人员所接受,在网络数据的传输当中应用非常广泛。现在做的项目需要把数据转换成下面的格式:
首先建立 PatientInformation.java、PatientTest.java和SleepDiary这三个类,主要是用来封装一些信息
PatientInformation.java
activity_main.xml
程序中先通过initDate()方法设置数据,再通过changeArrayDateToJson()函数将数据转换成json数据格式,转换后再通过changeJsonToData1()方法吧json数据转换成普通的数据,然后在进行下一步的操作。
{"PatitentData":[{"patient_mhistory":"高血压","patient_insomnia":"六个月","patient_gender":"男","patient_name":"张三","current_date":"2015.4.10","patient_phone":"1243543546","patient_scde":"大学本科","patient_age":"56","patient_postion":"农民"}],"sleepDiary":[{"day07":"1243535","day06":"12324343","day05":"1243434","day04":"2435434521","day01":"121422343","day02":"1231421454","day03":"1243243"}],"testData":[{"isi":"12324324","hama":"122543543","hamd":"2334255","sleepness":"1243345432","pqsi":"124332144452"}]}
首先建立 PatientInformation.java、PatientTest.java和SleepDiary这三个类,主要是用来封装一些信息
PatientInformation.java
package com.zghaikun.json; public class PatientInformation { private int id; private String patient_name; private String patient_gender; private String patient_age; private String patient_postion; private String patient_scde; private String patient_insomnia; private String patient_mhistory; private String patient_phone; private String current_date; private int patient_hamd; public PatientInformation() { super(); } public PatientInformation(int patient_hamd) { super(); this.patient_hamd = patient_hamd; } public PatientInformation( String current_date,String patient_name, String patient_gender, String patient_age, String patient_postion, String patient_scde, String patient_insomnia, String patient_mhistory, String patient_phone) { super(); this.current_date = current_date; this.patient_name = patient_name; this.patient_gender = patient_gender; this.patient_age = patient_age; this.patient_postion = patient_postion; this.patient_scde = patient_scde; this.patient_insomnia = patient_insomnia; this.patient_mhistory = patient_mhistory; this.patient_phone = patient_phone; } public PatientInformation(int id, String current_date,String patient_name, String patient_gender, String patient_age, String patient_postion, String patient_scde, String patient_insomnia, String patient_mhistory, String patient_phone) { super(); this.id = id; this.current_date = current_date; this.patient_name = patient_name; this.patient_gender = patient_gender; this.patient_age = patient_age; this.patient_postion = patient_postion; this.patient_scde = patient_scde; this.patient_insomnia = patient_insomnia; this.patient_mhistory = patient_mhistory; this.patient_phone = patient_phone; } public int getPatient_hamd() { return patient_hamd; } public void setPatient_hamd(int patient_hamd) { this.patient_hamd = patient_hamd; } public String getPatient_age() { return patient_age; } public void setPatient_age(String patient_age) { this.patient_age = patient_age; } public String getCurrentdate() { return current_date; } public void setCurrentdate(String currentdate) { this.current_date = currentdate; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getPatient_name() { return patient_name; } public void setPatient_name(String patient_name) { this.patient_name = patient_name; } public String getPatient_gender() { return patient_gender; } public void setPatient_gender(String patient_gender) { this.patient_gender = patient_gender; } public String getPatient_postion() { return patient_postion; } public void setPatient_postion(String patient_postion) { this.patient_postion = patient_postion; } public String getPatient_scde() { return patient_scde; } public void setPatient_scde(String patient_scde) { this.patient_scde = patient_scde; } public String getPatient_insomnia() { return patient_insomnia; } public void setPatient_insomnia(String patient_insomnia) { this.patient_insomnia = patient_insomnia; } public String getPatient_mhistory() { return patient_mhistory; } public void setPatient_mhistory(String patient_mhistory) { this.patient_mhistory = patient_mhistory; } public String getPatient_phone() { return patient_phone; } public void setPatient_phone(String patient_phone) { this.patient_phone = patient_phone; } }PatientTest.java
package com.zghaikun.json; public class PatientTest { int id; String pqsi; String sleepness; String hama; String hamd; String isi; public String getIsi() { return isi; } public void setIsi(String isi) { this.isi = isi; } public PatientTest() { super(); } public PatientTest(int id, String pqsi, String sleepness, String hama, String hamd,String isi) { super(); this.id = id; this.pqsi = pqsi; this.sleepness = sleepness; this.hama = hama; this.hamd = hamd; this.isi = isi; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getPqsi() { return pqsi; } public void setPqsi(String pqsi) { this.pqsi = pqsi; } public String getSleepness() { return sleepness; } public void setSleepness(String sleepness) { this.sleepness = sleepness; } public String getHama() { return hama; } public void setHama(String hama) { this.hama = hama; } public String getHamd() { return hamd; } public void setHamd(String hamd) { this.hamd = hamd; } }SleepDiary.java
package com.zghaikun.json; public class SleepDiary { private int id; private String day01; private String day02; private String day03; private String day04; private String day05; private String day06; private String day07; public SleepDiary(String day01, String day02, String day03, String day04, String day05, String day06, String day07) { super(); this.day01 = day01; this.day02 = day02; this.day03 = day03; this.day04 = day04; this.day05 = day05; this.day06 = day06; this.day07 = day07; } public SleepDiary(int id, String day01, String day02, String day03, String day04, String day05, String day06, String day07) { super(); this.id = id; this.day01 = day01; this.day02 = day02; this.day03 = day03; this.day04 = day04; this.day05 = day05; this.day06 = day06; this.day07 = day07; } public SleepDiary() { super(); } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getDay01() { return day01; } public void setDay01(String day01) { this.day01 = day01; } public String getDay02() { return day02; } public void setDay02(String day02) { this.day02 = day02; } public String getDay03() { return day03; } public void setDay03(String day03) { this.day03 = day03; } public String getDay04() { return day04; } public void setDay04(String day04) { this.day04 = day04; } public String getDay05() { return day05; } public void setDay05(String day05) { this.day05 = day05; } public String getDay06() { return day06; } public void setDay06(String day06) { this.day06 = day06; } public String getDay07() { return day07; } public void setDay07(String day07) { this.day07 = day07; } }一个布局文件,由两个按键和一个textView组成,
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/bt2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="把普通数据换成json数据格式的string"/> <Button android:id="@+id/bt4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="解析带集合的json字符串"/> <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:textSize="30sp" android:text="@string/hello_world" /> </LinearLayout>Mainactivity.java
package com.zghaikun.json; import java.util.ArrayList; import java.util.List; import org.apache.axis2.AxisFault; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private Button button1, button2, button3, button4; //4个按钮 private TextView textView; //显示处理结果的textview private List<PatientInformation> patientInfos; //保存数据的集合 private List<PatientTest> patientTest; private List<SleepDiary> sleepDiarys; private JSONObject object; //JSONObject对象,处理一个一个的对象 private JSONObject objPatientInfo; private JSONObject objTestData; private JSONObject objSleepDiary; private JSONArray jsonArrayPatientInfo;//JSONObject对象,处理一个一个集合或者数组 private JSONArray jsonArrayTestData;//JSONObject对象,处理一个一个集合或者数组 private JSONArray jsonArraySleepDiary;//JSONObject对象,处理一个一个集合或者数组 private String jsonString; //保存带集合的json字符串 private String jsonString2;//不带集合的json字符串 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //初始化控件 initDate(); //初始化数据 setListener(); //绑定监事件 // try { // SimpleServiceStub stub = new SimpleServiceStub(); // SimpleServiceStub.GetGreeting gg = new SimpleServiceStub.GetGreeting(); // gg.setParam0("比尔"); // System.out.println(stub.getGreeting(gg).local_return); // System.out.println(stub.getPrice().local_return); // } catch (Exception e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } } private void initView() { // TODO Auto-generated method stub button2 = (Button) findViewById(R.id.bt2); button4 = (Button) findViewById(R.id.bt4); textView = (TextView) findViewById(R.id.text); } private void initDate() { //设置了两个对象 patientInfos = new ArrayList<PatientInformation>(); PatientInformation pateintInfo = new PatientInformation(); pateintInfo.setPatient_name("张三"); pateintInfo.setPatient_gender("男"); pateintInfo.setPatient_age("56"); pateintInfo.setPatient_postion("农民"); pateintInfo.setPatient_scde("大学本科"); pateintInfo.setPatient_insomnia("六个月"); pateintInfo.setPatient_mhistory("高血压"); pateintInfo.setPatient_phone("1243543546"); pateintInfo.setCurrentdate("2015.4.10"); patientInfos.add(pateintInfo); //测试数据 patientTest = new ArrayList<PatientTest>(); PatientTest PatienData = new PatientTest(); PatienData.setPqsi("124332144452"); PatienData.setSleepness("1243345432"); PatienData.setHama("122543543"); PatienData.setHamd("2334255"); PatienData.setIsi("12324324"); patientTest.add(PatienData); sleepDiarys = new ArrayList<SleepDiary>(); SleepDiary sleepDiary = new SleepDiary(); sleepDiary.setDay01("121422343"); sleepDiary.setDay02("1231421454"); sleepDiary.setDay03("1243243"); sleepDiary.setDay04("2435434521"); sleepDiary.setDay05("1243434"); sleepDiary.setDay06("12324343"); sleepDiary.setDay07("1243535"); sleepDiarys.add(sleepDiary); } // //绑定监听器 private void setListener() { button2.setOnClickListener(this); button4.setOnClickListener(this); } //把一个集合转换成json格式的字符串 private void changeArrayDateToJson() { jsonArrayPatientInfo = null; object = null; jsonArrayPatientInfo = new JSONArray(); jsonArrayTestData = new JSONArray(); jsonArraySleepDiary = new JSONArray(); object = new JSONObject(); //遍历上面初始化的集合数据,把数据加入JSONObject里面 for (int i = 0; i < patientInfos.size(); i++) { //一个user对象,使用一个JSONObject对象来装 objPatientInfo = new JSONObject(); try { //从集合取出数据,放入JSONObject里面 JSONObject对象和map差不多用法,以键和值形式存储数据 objPatientInfo.put("patient_name", patientInfos.get(i).getPatient_name()); objPatientInfo.put("patient_gender", patientInfos.get(i).getPatient_gender()); objPatientInfo.put("patient_age", patientInfos.get(i).getPatient_age()); objPatientInfo.put("patient_postion", patientInfos.get(i).getPatient_postion()); objPatientInfo.put("patient_scde", patientInfos.get(i).getPatient_scde()); objPatientInfo.put("patient_insomnia", patientInfos.get(i).getPatient_insomnia()); objPatientInfo.put("patient_mhistory", patientInfos.get(i).getPatient_mhistory()); objPatientInfo.put("patient_phone", patientInfos.get(i).getPatient_phone()); objPatientInfo.put("current_date", patientInfos.get(i).getCurrentdate()); //把JSONObject对象装入jsonArray数组里面 jsonArrayPatientInfo.put(objPatientInfo); } catch (JSONException e) { e.printStackTrace(); } } for(int i = 0 ; i < patientTest.size(); i++){ //测试对象,使用JSONObject objTestData = new JSONObject(); try { objTestData.put("pqsi", patientTest.get(i).getPqsi()); objTestData.put("sleepness", patientTest.get(i).getSleepness()); objTestData.put("hama", patientTest.get(i).getHama()); objTestData.put("hamd", patientTest.get(i).getHamd()); objTestData.put("isi", patientTest.get(i).getIsi()); //把JSONObject对象装入jsonArray数组里面 jsonArrayTestData.put(objTestData); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } for(int i = 0 ; i < sleepDiarys.size(); i++){ //测试对象,使用JSONObject objSleepDiary = new JSONObject(); try { objSleepDiary.put("day01", sleepDiarys.get(i).getDay01()); objSleepDiary.put("day02", sleepDiarys.get(i).getDay02()); objSleepDiary.put("day03", sleepDiarys.get(i).getDay03()); objSleepDiary.put("day04", sleepDiarys.get(i).getDay04()); objSleepDiary.put("day05", sleepDiarys.get(i).getDay05()); objSleepDiary.put("day06", sleepDiarys.get(i).getDay06()); objSleepDiary.put("day07", sleepDiarys.get(i).getDay07()); //把JSONObject对象装入jsonArray数组里面 jsonArraySleepDiary.put(objSleepDiary); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } try { //再把JSONArray数据加入JSONObject对象里面(数组也是对象) object.put("PatitentData", jsonArrayPatientInfo); object.put("testData", jsonArrayTestData); object.put("sleepDiary", jsonArraySleepDiary); //object.put("time", "2013-11-14"); //这里还可以加入数据,这样json型字符串,就既有集合,又有普通数据 } catch (JSONException e) { e.printStackTrace(); } jsonString = null; //把JSONObject转换成json格式的字符串 jsonString = object.toString(); textView.setText(jsonString); Log.i("输出json字符串", "转换成json字符串: " + jsonString); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt2: changeArrayDateToJson(); //点击第2个按钮,把普通数据换成json数据格式的string break; case R.id.bt4://解析带集合的json字符串 if (jsonString==null || "".equals(jsonString)) { Toast.makeText(MainActivity.this, "请先点击第2按钮把数据换成json字符串", Toast.LENGTH_LONG).show(); return; } changeJsonToData1(); break; default: break; } } //解析带集合的json字符串 private void changeJsonToData1() { //用来保存解析出来的数据,显示在textview StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder2 = new StringBuilder(); StringBuilder stringBuilder3 = new StringBuilder(); PatientInformation patient; PatientTest patientTest; SleepDiary sleepDiary; List<PatientInformation> pInfoList=new ArrayList<PatientInformation>(); List<PatientTest> pTestList = new ArrayList<PatientTest>(); List<SleepDiary> sleepList = new ArrayList<SleepDiary>(); try { object = new JSONObject(jsonString); jsonArrayPatientInfo = object.getJSONArray("PatitentData"); //通过key,获取JSONObject里面的一个JSONArray数组 jsonArrayTestData = object.getJSONArray("testData"); jsonArraySleepDiary = object.getJSONArray("sleepDiary"); for (int i = 0; i < jsonArrayPatientInfo.length(); i++) { //遍历数据 object = jsonArrayPatientInfo.getJSONObject(i); //从JSONArray里面获取一个JSONObject对象 patient = new PatientInformation(); patient.setPatient_name(object.getString("patient_name")); patient.setPatient_gender(object.getString("patient_gender")); patient.setPatient_age(object.getString("patient_age")); patient.setPatient_postion(object.getString("patient_postion")); patient.setPatient_scde(object.getString("patient_scde")); patient.setPatient_insomnia(object.getString("patient_insomnia")); patient.setPatient_mhistory(object.getString("patient_mhistory")); patient.setPatient_phone(object.getString("patient_phone")); patient.setCurrentdate(object.getString("current_date")); pInfoList.add(patient); } } catch (JSONException e) { e.printStackTrace(); } for (int i = 0; i < pInfoList.size(); i++) { stringBuilder.append("患者姓名:"+pInfoList.get(i).getPatient_name()).append(" ").append("患者年龄:" + pInfoList.get(i).getPatient_age()).append(" ").append("性别:" + pInfoList.get(i).getPatient_gender()).append(" ").append("职业:" + pInfoList.get(i).getPatient_postion()).append(" ").append("学历:" + pInfoList.get(i).getPatient_scde()).append(" ") .append("失眠时间:" + pInfoList.get(i).getPatient_insomnia()).append(" ").append("既往病史: " + pInfoList.get(i).getPatient_mhistory()).append(" ").append("联系方式:" + pInfoList.get(i).getPatient_phone()).append(" ").append("测试时间 :" + pInfoList.get(i).getCurrentdate()); } for(int i = 0;i < jsonArrayTestData.length();i++){ try { object = jsonArrayTestData.getJSONObject(i); patientTest = new PatientTest(); patientTest.setPqsi(object.getString("pqsi")); patientTest.setSleepness(object.getString("sleepness")); patientTest.setHama(object.getString("hama")); patientTest.setHamd(object.getString("hamd")); patientTest.setIsi(object.getString("isi")); pTestList.add(patientTest); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } for (int i = 0; i < pTestList.size(); i++) { stringBuilder2.append("pqsi:"+pTestList.get(i).getPqsi()).append(" ").append("sleepness:" + pTestList.get(i).getSleepness()).append(" ").append("hama" + pTestList.get(i).getHama()).append(" ").append("hamd:" + pTestList.get(i).getHamd()).append(" ").append("isi:" + pTestList.get(i).getIsi()); } System.out.println("111111111111111111111111111"); for(int i = 0;i < jsonArraySleepDiary.length();i++){ try { object = jsonArraySleepDiary.getJSONObject(i); System.out.println("22222222" + object); sleepDiary = new SleepDiary(); sleepDiary.setDay01(object.getString("day01")); sleepDiary.setDay02(object.getString("day02")); sleepDiary.setDay03(object.getString("day03")); sleepDiary.setDay04(object.getString("day04")); sleepDiary.setDay05(object.getString("day05")); sleepDiary.setDay06(object.getString("day06")); sleepDiary.setDay07(object.getString("day07")); sleepList.add(sleepDiary); System.out.println("2222222222222222222222222"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } for (int i = 0; i < sleepList.size(); i++) { stringBuilder3.append("day01:"+sleepList.get(i).getDay01()).append(" ").append("day02:" + sleepList.get(i).getDay02()).append(" ").append("day03" + sleepList.get(i).getDay03()).append(" ").append("day04:" + sleepList.get(i).getDay04()).append(" ").append("day05:" + sleepList.get(i).getDay05()) .append(" ").append("day06:" + sleepList.get(i).getDay06()).append(" ").append("day07:" + sleepList.get(i).getDay07()); } textView.setText(stringBuilder.toString() + "\n" + stringBuilder2.toString() + "\n" + stringBuilder3); } }
程序中先通过initDate()方法设置数据,再通过changeArrayDateToJson()函数将数据转换成json数据格式,转换后再通过changeJsonToData1()方法吧json数据转换成普通的数据,然后在进行下一步的操作。
相关文章推荐
- Android学习---使用JSONObject 解析JSON格式数据
- Android JSON数据格式的解析,与简单对象、带泛型的List和Map的转换,以及GSON的使用
- Android使用自带JSONObject解析JSON数据
- android实现json数据的解析和把数据转换成json格式的字符串
- Android使用自带JSONObject解析JSON数据
- 前台js获取到后台json数据,eval解析json后,日期(object)对象转换为date日期格式显示
- Json数据格式介绍、使用Android自带类库完成Json生成与解析
- Json数据格式介绍、使用Android自带类库完成Json生成与解析
- 第一行代码总结:10网络:10.4解析JSON格式数据10.4.1使用JSONObject
- android学习---使用GSON解析JSON格式数据
- android实现json数据的解析和把数据转换成json格式的字符串
- 百度天气api开发 全解析xml和json格式 使用json-lib jsonObject、 Gson 方式把json 转换成 java对象
- 【Android开发经验】Json数据格式介绍、使用Android自带类库完成Json生成与解析
- Android使用自带JSONObject解析JSON数据 - jCuckoo的专栏 - 博客频道 - CSDN.NET
- 【Android开发经验】Json数据格式介绍、使用Android自带类库完成Json生成与解析
- android实现json数据的解析和把数据转换成json格式的字符串
- android用JSONObject和JSONArray解析json格式数据
- json 的解析-使用Android中的JSONObject和JSONArray解析json数据
- Android中的httpClient使用及JSON格式数据的解析方法
- Android访问网络:服务端返回XML或JSON格式数据,Android 进行解析并使用ListView显示