package com.example.savejsonproject; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; import java.util.Date; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { private String company="宜昌静哥科技软件学院"; private String address="湖北省宜昌市宜都市枝城镇"; private String telephone="18671736137"; private String[] namedata={"李元静","冯新尧","何帆"}; private int[] agedata={21,22,21}; private boolean[] marrieddata={true,false,true}; private double[] salarydata={8000.0,8000.0,8000.0}; private Date[] birthdaydata={new Date(),new Date(),new Date()}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); JSONObject allData=new JSONObject(); //建立最外面的JSONObject JSONArray array=new JSONArray(); //定义新的JSONArray对象 for (int i = 0; i < namedata.length; i++) { //For循环添加数据 JSONObject temp=new JSONObject(); //创建一个新的JSONObject对象 try { temp.put("name", namedata[i]); //设置要保存的数据,直接子项的子项 temp.put("age", agedata[i]); temp.put("merried", marrieddata[i]); temp.put("salary", salarydata[i]); temp.put("birthday", birthdaydata[i]); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } array.put(temp); } try { allData.put("persondata", array); //保存所有数据 allData.put("company", this.company); //最外层数据 allData.put("address", this.address); allData.put("telephone", this.telephone); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//判断是否存在SD卡 return ; } File file=new File(Environment.getExternalStorageDirectory().toString() +File.separator+"mldndata" +File.separator+"json.txt"); if(!file.getParentFile().exists()){//判断父文件是否存在,如果不存在则创建 file.getParentFile().mkdirs(); } PrintStream out=null; //打印流 try { out=new PrintStream(new FileOutputStream(file)); //实例化打印流对象 out.print(allData.toString()); //输出数据 } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(out!=null){ //如果打印流不为空,则关闭打印流 out.close(); } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }