인프런 커뮤니티 질문&답변

김재우님의 프로필 이미지
김재우

작성한 질문수

[입문] Qt 6 프로그래밍 2편

QT로 이미지나 json 파일 가져올때

작성

·

302

1

강사님 안녕하세요
강의를 볼 수 있는 기간이 얼마 남지 않아 조금한 마음에 질문드립니다.
 
이미치 처리나 JSON파일 처리 강의를 볼때 이미지 파일이나 JSON 파일을 리소스에 등록시키고 가져 오던데
꼭 리소스에 등록을 해야만 하나요? 파일 있는 곳이 프로젝트 파일이이 있는 곳이면 상대적 경로로 가져오면 될 것 같은데
방법을 문의 드립니다.
 
아래 파일은 제가 파싱하고자 하는 JSON 파일입니다. 우선 start 오브젝트의 값들을 가져오고자 하느데
다음과 같이 하니 동작이 되지 않습니다. 문제점 지적 부탁드립니다.
parseJSON(const QString &data)
QJsonDocument jsonResponse = QJsonDocument::fromJson(data.toLocal8Bit()); QJsonObject totalobj = jsonResponse.object(); QJsonObject startobj = totalobj["start"].toObject(); QString Str1 = startobj["version"].toString(); QString Str2 = startobj["system_info"].toString(); ui->textEdit->append(Str1); ui->textEdit->append(Str2);
 
JSON 파일에 오브젝트에 오브젝트를 얻어 오는 방법이 어떻게 되는 지 궁금합니다.
예로 보여주신 것은 단 하나의 오브텍트를 가지는 JSON 파일인데 보통 계층이 여러개가 되는 JSON파일은
어떤식으로 파싱을 해야 하나요?
 
아래 JSON파일이 이렇게 밖에 첨부되지 않는데 적당한 에디터로 옮겨야 할 것 같습니다. 죄송합니다.
 
 
 
->json 파일
{ "start": { "connected": [{ "socket": 4, "local_host": "127.0.0.1", "local_port": 53559, "remote_host": "127.0.0.1", "remote_port": 5201 }], "version": "iperf 3.1.3", "system_info": "CYGWIN_NT-10.0 ▒▒▒▒▒▒ 2.5.1(0.297/5/3) 2016-04-21 22:14 x86_64", "timestamp": { "time": "Tue, 19 Jul 2022 05:49:51 GMT", "timesecs": 1658209791 }, "connecting_to": { "host": "127.0.0.1", "port": 5201 }, "cookie": "▒▒▒▒▒▒.1658209791.845554.28a3c74361a", "tcp_mss_default": 0, "test_start": { "protocol": "TCP", "num_streams": 1, "blksize": 131072, "omit": 0, "duration": 5, "bytes": 0, "blocks": 0, "reverse": 0 } }, "intervals": [{ "streams": [{ "socket": 4, "start": 0, "end": 1.000721, "seconds": 1.000721, "bytes": 2595618816, "bits_per_second": 2.074999e+10, "omitted": false }], "sum": { "start": 0, "end": 1.000721, "seconds": 1.000721, "bytes": 2595618816, "bits_per_second": 2.074999e+10, "omitted": false } }, { "streams": [{ "socket": 4, "start": 1.000721, "end": 2.005017, "seconds": 1.004296, "bytes": 2570846208, "bits_per_second": 2.047880e+10, "omitted": false }], "sum": { "start": 1.000721, "end": 2.005017, "seconds": 1.004296, "bytes": 2570846208, "bits_per_second": 2.047880e+10, "omitted": false } }, { "streams": [{ "socket": 4, "start": 2.005017, "end": 3.011280, "seconds": 1.006263, "bytes": 2549088256, "bits_per_second": 2.026578e+10, "omitted": false }], "sum": { "start": 2.005017, "end": 3.011280, "seconds": 1.006263, "bytes": 2549088256, "bits_per_second": 2.026578e+10, "omitted": false } }, { "streams": [{ "socket": 4, "start": 3.011280, "end": 4.000203, "seconds": 0.988923, "bytes": 2492203008, "bits_per_second": 2.016095e+10, "omitted": false }], "sum": { "start": 3.011280, "end": 4.000203, "seconds": 0.988923, "bytes": 2492203008, "bits_per_second": 2.016095e+10, "omitted": false } }, { "streams": [{ "socket": 4, "start": 4.000203, "end": 5.008456, "seconds": 1.008253, "bytes": 2597322752, "bits_per_second": 2.060850e+10, "omitted": false }], "sum": { "start": 4.000203, "end": 5.008456, "seconds": 1.008253, "bytes": 2597322752, "bits_per_second": 2.060850e+10, "omitted": false } }], "end": { "streams": [{ "sender": { "socket": 4, "start": 0, "end": 5.008456, "seconds": 5.008456, "bytes": 12805079040, "bits_per_second": 2.045354e+10 }, "receiver": { "socket": 4, "start": 0, "end": 5.008456, "seconds": 5.008456, "bytes": 12804882391, "bits_per_second": 2.045322e+10 } }], "sum_sent": { "start": 0, "end": 5.008456, "seconds": 5.008456, "bytes": 12805079040, "bits_per_second": 2.045354e+10 }, "sum_received": { "start": 0, "end": 5.008456, "seconds": 5.008456, "bytes": 12804882391, "bits_per_second": 2.045322e+10 }, "cpu_utilization_percent": { "host_total": 97.261207, "host_user": 2.194162, "host_system": 95.067046, "remote_total": 3.763427, "remote_user": 0.787845, "remote_system": 2.975581 } } }

답변 1

0

김대진님의 프로필 이미지
김대진
지식공유자

안녕하세요. 김재우님,

제가 JSON 파일을 리소스에 등록해 사용한것은 구현 설명을 쉽게 하려고 한것입니다. 

resource 에 등록하지 않고 사용하셔도 됩니다. 

김재우님의 프로필 이미지
김재우
질문자

죄송합니다. 아무리 인터넷을 찾고 도움말을 봐도 정확하게 나오지 않네요

혹시 Qt 에서 프로젝트파일이 위치한 폴더에 파일을 읽고 싶은때 경로지정을 어떻게 해야 할까요?

김대진님의 프로필 이미지
김대진
지식공유자

프로젝트가 있는 위치는 알수없구요. 실행파일이 있는 위치는 알수있습니다.

김재우님의 프로필 이미지
김재우
질문자

QCoreApplication::applicationDirPath() 

이걸써서 실행파일 폴더는 알아냈습니다. 프로젝트는 알 수 없군요.

감사합니다. 

김재우님의 프로필 이미지
김재우

작성한 질문수

질문하기