JAVA, json 파일 생 성 및 내 보 내기 실현
6183 단어 Android
자바 의 문법 에 약간의 차이 가 있 을 줄 알 았 는데, 지금 정리 해서 필 기 를 하 자.
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.