Json 파일 읽기 및 쓰기 정보

5689 단어 Android
일반적인 상황에서 Json 파일이나 xml 파일로 데이터를 저장할 수 있는데 이 글은 주로 Json 파일에 대한 읽기와 쓰기를 요약한다.
프로젝트에서 나는 Json 파일을 휴대전화의 외장SD카드에 저장하기 때문에 우선 우리는 안드로이드 매니페스트에 저장해야 한다.xml에서 SD 카드에 대한 읽기/쓰기 권한을 선언합니다.
    

관리를 편리하게 하기 위해 저는 빈을 봉인했습니다. 이름은 medicine Bean이고 코드는 다음과 같습니다.
public class medicineBean { private int index; private String name; private String times; private String sideEffect; private boolean isSelected; public medicineBean(int index,String name, String times, String sideEffect, boolean isSelected) { this.index = index; this.name = name; this.times = times; this.sideEffect = sideEffect; this.isSelected = isSelected; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTimes() { return times; } public void setTimes(String times) { this.times = times; } public String getsideEffect() { return sideEffect; } public void setsideEffect(String sideEffect) { this.sideEffect = sideEffect; } public boolean isSelected() { return isSelected; } public void setSelected(boolean isSelected) { this.isSelected = isSelected; } }
그리고 저는 Json 리더를 썼습니다. 이 종류는 다시 사용할 수 있고 필요에 따라 미디어빈을 다른 사용자 정의 빈으로 바꿀 수 있습니다.
그리고 모든 방법은 매개 변수를 조금만 수정하면 된다.구체적인 코드는 다음과 같습니다.
public class JSONReader Writer {//JSON 리더기//하나의 medicineBan@Suppress JSONReader Writer Writer writer///한 개의 medicinebeineBan@SuppressLin('NeApi'Nee''''NeApi') pupressLin('NeA'NeAt''''''''''''''''''NeeASSSSSSSSSSSSSONReader Wader WriterWriterWriterWriterWriter Writer Writer Writer Writer Writer Writer Wri(mBean.getName(), jsonWriter.name("times").value(mBean.getTimes()); jsonWriter.name("sideEffect").value(mBean.getsideEffect()); jsonWriter.name("isSelected").value(mBean.isSelected()); jsonWriter.endObject(); }//medicineBean 배열 public static void write Medicine Bean Array(JsonWriter jsonWriter, List medicineBean List) throws IOException {jsonWriter. begin Array (), for(medicine Bean mBean: medicine Bean List) {write Medicine Bean(json Writer, mBean)jsonWriter.endArray(); } public static void writeJsonStream(OutputStream outputStream, List medicineBeanList) throws IOException { JsonWriter jsonWriter = new JsonWriter(new OutputStreamWriter(outputStream,"UTF-8")); jsonWriter.setIndent(""); writeMedicineBeanArray(jsonWriter,medicineBeanList); jsonWriter.close(); }//List를 json 파일에 public static void write Json File(String filePath, List medicine Bean List) throws IOException {File Output Stream file Output Stream = new File Output Stream(file Path);/File Outputput Stream 실례 대상이 이미 존재하는 경우 이 파일의 원래 내용이 지워집니다 write Json Stream(fileOutputStream,medicineBeanList); System.out.println("Write JSON Done!"); }//json 파일을 읽고 그 결과를 List에 public static List readJson File(String filePath) throws IOException {File InputStream file InputStream = new File InputStream(file Path), Json Reader json Reader = new Json Reader(new InputStream Reader(file InputStream, UTF-8), Medicin Beadjson Reader)public static List readMedicineBeanArray(JsonReader jsonReader) throws IOException { List medicineBeanList = new ArrayList(); jsonReader.beginArray(); while (jsonReader.hasNext()) { medicineBeanList.add(readMedicineBean(jsonReader)); } jsonReader.endArray(); jsonReader.close(); return medicineBeanList; } public static medicineBean readMedicineBean(JsonReader jsonReader) throws IOException { int index = -1; String name = null; String times = null; String sideEffect = null; boolean isSelected = false; jsonReader.beginObject(); while (jsonReader.hasNext()) { String field = jsonReader.nextName(); if(field.equals("name")) { name=jsonReader.nextString(); } else if(field.equals("times")) { times=jsonReader.nextString(); } else if(field.equals("sideEffect")) { sideEffect=jsonReader.nextString(); } else if(field.equals("index")) { index=jsonReader.nextInt(); } else if(field.equals("isSelected")) { isSelected=jsonReader.nextBoolean(); } } jsonReader.endObject(); return new medicineBean(index, name, times, sideEffect, isSelected); } }
예를 들어 지금 나는 미디어빈을 카빈으로 바꿔야 한다. 카빈 안의 멤버는 카네임, 카넘, 카오우너가 있다.
writeMedicineBean 메서드의 경우 수정된 메서드는 다음과 같습니다.
public static void writeCarBean(JsonWriter jsonWriter, carBean mBean) throws IOException { jsonWriter.beginObject(); jsonWriter.name("carName").value(mBean.getCarName()); jsonWriter.name("carNum").value(mBean.getCarNum()); jsonWriter.name("carOwner").value(mBean.getCarOwner()); jsonWriter.endObject(); }
다른 방법의 수정은 비슷했다. 봉인된 빈이 바뀌었고 Json 리더의 읽기 클래스도 바뀌었다.
마지막으로 Json 읽기와 쓰기를 진행하는Activity에서 먼저 저장 경로와 Json 파일에서 읽은 내용을 저장하는 범위를 정의합니다.그리고 Oncreate에서.
다음 코드를 삽입하여 Json 파일을 읽습니다.
//지정한 루트 절대 경로 externalFilePath = getactivity () 를 가져옵니다.getExternalFilesDir(null).getAbsolutePath(); medicinePath = externalFilePath+"/aids_medicineJSON.txt";//JSON 파일 파일 파일 가져오기 = new File(medicinePath),//이전에 목록 데이터를 저장한 경우 파일에서 목록 if(file.exists() {try {mListItems=(Array List) JSONReader Writer.readJson File(medicine Path)를 가져옵니다}catch (IOException e) { e.printStackTrace(); } } else//그렇지 않으면 0 {//mListItems = new ArrayList ();
OnDestroy 메서드에 다음 코드를 삽입하여 Json 파일을 작성합니다.
//마지막 결과를 JSON 파일try {JSONReaderWriter.writeJsonFile(medicinePath, mListItems)에 기록합니다.catch (IOException e) { e.printStackTrace(); }
이상은 본 블로그의 전체 내용입니다. 여러분께 도움이 되었으면 좋겠습니다. 감사합니다!

좋은 웹페이지 즐겨찾기