JAVA, json 파일 생 성 및 내 보 내기 실현

6183 단어 Android
저 는 자바 의 문법 에 익숙 하지 않 습 니 다. 중간 에 갑자기 구덩이 에 들 어간 셈 입 니 다. 이전에 python 에서 json 파일 을 생 성하 고 제 이 슨 파일 을 내 보 낸 적 이 있 습 니 다.
자바 의 문법 에 약간의 차이 가 있 을 줄 알 았 는데, 지금 정리 해서 필 기 를 하 자.
 
JSon 포맷 도구 추천: json 포맷 도구
 
우선 JSON 의 기본 문법 부터 알 아 보 자.
1. json 의 네 가지 기본 규칙 (1) 병렬 데이터 사이 에 쉼표 ',' 구분 (2) 맵 용 콜론 ': '(3) 병렬 데 이 터 를 나타 내 는 집합 (배열) 은 네모 난 괄호 로 표시 합 니 다. (4) 매 핑 된 집합 (대상) 은 큰 괄호 로 표시 합 니 다. {} 은 2. 단점 (1) 요 구 는 유 니 코드 입 니 다. 그렇지 않 으 면 난 코드 (2) 문법 이 너무 엄 격 히 금 지 될 수 있 습 니 다. json 문법 네 가지 원칙 을 따라 야 합 니 다. 3. (1) 데이터 구조: object, array (2) 기본 유형: string, number, true, false,null (3) key 는 String 형식 이 어야 합 니 다. value 는 모든 기본 형식 이나 데이터 구조 입 니 다.
 
다음은 다음 과 같은 내용 의 예 시 를 대상 으로 제 이 슨 코드 를 실현 하고 '제 이 슨' 파일 로 내 보 내 는 방법 입 니 다.
{
    "name":"   ",
    "age":25,
    "height":"185.5",
    "school":"  ",
    "major":[{
              "job1":"worker",
              "job2":"doctor"
                  },
             {
              "job3":"teacher",
              "job4":"student"
                  }],
    "houseLocation":{
        "x":30,
        "y":30
    }
}

코드 구현 은 다음 과 같 습 니 다.
String fullPath = filePath + File.separator + fileName + ".json";
//  :fullPath="D:/myroot/test.json"

//   json    
 try {
      //          
      File file = new File(fullPath);
      if (!file.getParentFile().exists()) 
       { //         ,     
         file.getParentFile().mkdirs();
       }
      if (file.exists()) { //      ,     
         file.delete();
       }
      file.createNewFile();

      //    json    
      //    json  ,       
      JSONObject root =new JSONObject();
      root.put("name","   ");
      root.put("age",25)
      //     double,         
      double height=185.5345;
      root.put("height",(double)(Math.round(height*10)/10.0));
      JSONArray array=new JSONArray();
      JSONObject major1=new JSONObject();
      major1.put("job1","worker");
      major1.put("job2","doctor");
      JSONObject major2=new JSONObject();
      major2.put("job3","teacher");
      major2.put("job4","student");
      array.put( major1);
      array.put( major2);
      root.put("major",array);
      //    x,y  double  ,       
      double x=30.0045;
      double y=30.1123;
      JSONObject houloc=new JSONObject();
      houloc.put("x",Math.round(x));
      houloc.put("y",Math.round(y));
      root.put("houseLocation",houloc)
      
      
      //    json   
      jsonString = formatJson(root.toString());
 
      //              
      Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
      write.write(jsonString);
      write.flush();
      write.close();
     } catch (Exception e) {
        e.printStackTrace();
     }

그 중에서 formatJSon 이라는 함수 로 호출 됩 니 다. 다음은 같은 자바 파일 에서 정 의 된 이 함수 와 관련 함수 입 니 다.
(아래 함수 의 역할 은 json 형식의 데 이 터 를 문자열 화하 고 형식 적 으로 아름 답 게 만 드 는 것 입 니 다. 그렇지 않 으 면 진 json 파일 은 한 줄 의 내용 이 고 줄 을 바 꾸 지 않 았 으 며 그렇지 않 습 니 다. notepad 로 생산 된 json 파일 을 보 는 것 을 권장 합 니 다)
    /**
     *        。
     */
    private static String SPACE = "   ";

    /**
     *      JSON   。
     *
     * @param json      JSON   。
     * @return     JSON   。
     */
    public static String formatJson(String json) {
        StringBuffer result = new StringBuffer();

        int length = json.length();
        int number = 0;
        char key = 0;

        //        。
        for (int i = 0; i < length; i++) {
            // 1、      。
            key = json.charAt(i);

            // 2、           、         :
            if ((key == '[') || (key == '{')) {
                // (1)        ,     “:”,  :          。
                if ((i - 1 > 0) && (json.charAt(i - 1) == ':')) {
                    result.append('
'); result.append(indent(number)); } // (2) : 。 result.append(key); // (3) 、 , 。 : 。 result.append('
'); // (4) 、 ; 。 : 。 number++; result.append(indent(number)); // (5) 。 continue; } // 3、 、 : if ((key == ']') || (key == '}')) { // (1) 、 , 。 : 。 result.append('
'); // (2) 、 ; 。 : 。 number--; result.append(indent(number)); // (3) : 。 result.append(key); // (4) , “,”, : 。 if (((i + 1) < length) && (json.charAt(i + 1) != ',')) { result.append('
'); } // (5) 。 continue; } // 4、 。 , , 。 if ((key == ',')) { result.append(key); result.append('
'); result.append(indent(number)); continue; } // 5、 : 。 result.append(key); } return result.toString(); } /** * 。 , SPACE。 * * @param number 。 * @return 。 */ private static String indent(int number) { StringBuffer result = new StringBuffer(); for (int i = 0; i < number; i++) { result.append(SPACE); } return result.toString(); }

참고:
https://blog.csdn.net/muziqin12345/article/details/80265218
https://blog.csdn.net/weixin_42749765/article/details/81533635
https://blog.csdn.net/dearKundy/article/details/79815565

좋은 웹페이지 즐겨찾기