jsmn/example/simple.c -> parsejsonfile.c 로 업그레이드
기존의 simple.c 소스코드는 안에 있는 값이 설정돼있는 JSON_STRING을 파싱해서 결과를 나타냈다면, 이번 과제의 목적은 외부 파일로부터 문자열들을 모두 읽어서 JSON_STRING에 저장하고 파싱해서 결과를 나타내는 것이다.
이렇게 변경된 소스코드의 이름을 parsejsonfile.c라 하고, 내부에 char * readjsonfile() 함수를 만들어서 외부파일 parsejson.txt의 내용을 JSON_STRING에 저장시키고, 이것을 파싱해 key값과 value값이 구분된 형태로 결과를 나타낼 것이다.
1. Makefile 변경하기
아래와 같이 parse_example에 대해 simple_example에서 가져와 만들어준다.
2. example 안에 parsejson.json를 만들고 json 타입의 내용을 넣는다.
3. example 안에 simple.c를 복사해서 parsejsonfile.c를 만든다.
4. parsejsonfile.c를 수정한다.
4-1) char * readjsonfile() 함수를 만든다.
4-2) 메인에서 JSON_STRING 포인터의 내용을 함수로 반환해준다.
4-3) 미리 내가 읽을 파일의 key와 value에 대한 내용을 추가해준다.
age, major, animals를 추가해줬다.
5. make parse_example 명령으로 parse_example 실행파일을 만들고 실행한다.
*하지만 메모리 할당의 문제로 잘 실행이 되지 않는다. 수정이 필요하다.
알아낸 문제점은 parsejson.json 파일 안에 내용 중간에 [] 가 들어간 것을 인식하지 못하는 것이었다.
그래서 내용들을 한 줄로 붙여줬더니 모두 읽혔다.
수정한 parsejson.json파일
6. 다시 parse_example 실행.
[출처] JSMN 프로그램의 simple.c 수정하기|작성자 희석
'기타 > JSMN' 카테고리의 다른 글
JSMN simple.c 3탄 (0) | 2018.08.08 |
---|---|
JSMN simple.c 2 수정 (0) | 2018.08.08 |
JSMN , JSON malloc, realloc 사용해서 파일 읽기. (0) | 2018.08.08 |
JSON 개요 (0) | 2018.06.22 |