본문 바로가기
기타/JSMN

JSMN simple.c 분석 및 응용

by Jun_N 2018. 8. 8.

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' 카테고리의 다른 글

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