perl 6 JSON:: Fast 모듈 json 해석 사용
16001 단어 json 해석
JSON (JavaScript Object Notation) 은 경량급 데이터 교환 형식 으로 문법 이 간단 하고 각종 언어 에 해당 하 는 라 이브 러 리 나 모듈 이 지원 된다.
JSON 은 매우 작고 해석 하기 도 간단 하기 때문에 저 는 설정 파일 을 JSON 형식 으로 자주 구성 합 니 다.
JSON:: Fast:
http://modules.perl6.org/ 에 대한 소개: A naive, but hopefully fast json parser;drop-in replacement for JSON::Tiny
단순 하고 빠 른 JSON 해상도 기;JSON 대신:: Tiny
perl 6 의 ftp 자동 업로드 애플 릿 을 만 들 려 고 했 는데 오늘 반나절 동안 반 을 썼 는데 perl 6 에 기 존 ftp 라 이브 러 리 가 없다 는 것 을 알 게 되 었 습 니 다. 그런데 쓰 는 과정 에서 JSON: Fast 를 알 게 되 었 습 니 다.
모듈 의 용법.그래도 가치 가 있다
JSON:: Fast 설치
perl 6 는 panda 를 사용 하여 모듈 을 관리 합 니 다. panda 설치 모듈 은 fedora 설치 소프트웨어 처럼 간단 하고 명령 하나 로 해결 할 수 있 습 니 다.
1 panda install JSON::Fast
판다 의 원인 인지 내 문제 인지 판다 의 반응 은 내 기계 에서 매우 느리다. 비록 나의 CPU 가 너무 썩 었 지만.
설치 가 완료 되면 아래 명령 을 사용 하여 설치 성공 여 부 를 테스트 할 수 있 습 니 다.
perl6 -e "use JSON::Fast"
JSON:: Fast 모듈 이 존재 하지 않 으 면 실행 오류 가 발생 합 니 다.
JSON:: 빠 른 사용
우선, 우 리 는 간단 한 json 파일, sample. json 이 있 습 니 다. 파일 내용 은 다음 과 같 습 니 다.
{
"user-list":[
"username",
"otheruser"
],
"username":{
"ip":"192.168.0.100",
"port":"21",
"pass":"password",
"dir":".",
"ext":""
},
"otheruser":{...// }
}
json 파일 은 간단 합 니 다. ftp 에서 애플 릿 을 업로드 하 는 프로필 을 만 들 려 고 합 니 다.
우선, 새 파일 은 fast - json. pl 이 라 고 합 니 다. MAIN 함 수 를 쓰 고 perl 6 의 MAIN 함수 가 비교적 강하 게 만 들 었 습 니 다.
1 sub MAIN(Str :c(:$config-file) = "", *@file) {
2 if +@file == 0 {
3 say "No file argument";
4 return;
5 }
6 }
그리고 chmod + x fast - json. pl, 실행 해 보 세 요. / fast - json. pl -- help
Usage:
./fast-json.pl [-c|--config-file=<Str>] [<file> ...]
셸 의 명령 처럼 용법 알림 이 나타 납 니 다.
이 몇 줄 의 코드 를 설명 하고,
첫 줄
sub 는 함수 의 시작 또는 서브루틴 이 라 고 합 니 다.MAIN 은 C 언어의 main 과 같은 역할 을 하 는 함수 입 니 다. 그러나 MAIN 함수 가 정의 되면 전체적인 문 구 를 먼저 실행 한 다음 에 MAIN 을 마지막 으로 실행 합 니 다.
Str 는 perl 6 의 유형 이 고 다른 유사 한 유형 은 Int, Bool 등 이 있 습 니 다. 변 수 를 얻 으 려 면 WHAT 방법 을 사용 할 수 있 습 니 다. 예 를 들 어
say $var.WHAT;
이 말 은 $var 의 형식 을 인쇄 합 니 다.
$config - file 은 MAIN 함수 의 첫 번 째 인자 입 니 다. 파일 의 경 로 를 설정 하고 변수 앞 에 ':' 를 추가 하여 가 변 적 인 이름 변수 로 만 듭 니 다. 그러면 스 크 립 트 의 설정 으로 사용 할 수 있 습 니 다. 앞 에
의: c 는 이 설정 의 짧 은 이름 을 대표 합 니 다. * @file, @ 대표 배열, * 대표 남 은 모든 인 자 를 @ file 배열 의 구성원 으로 합 니 다. json 해석 과 무관 하기 때문에 자세히 말 하지 않 습 니 다.
이렇게 해서 저희 가 이렇게 테스트 를 할 수 있어 요.
./fast-json.pl --config-file=users.cfg xxx
users. cfg 는 json 형식의 config 파일 로 xxx 는 업로드 할 파일 을 대표 합 니 다.
그리고 분석 이 필요 한 json 파일 의 내용 을 읽 습 니 다.
1 my $json-path = IO::Path.new($config-file);
2
3 if (!($json-path.e && $json-path.r)) {
4 say "Config file not exist path -> $json-path";
5 exit
6 }
7 my $json-slurp = $json-path.slurp();
IO:: Path 는 내 장 된 클래스 로 파일 작업 과 관련 된 함수 가 있 습 니 다.
. e. r 는 각각 파일 이 존재 하 는 지, 읽 을 수 있 는 지 판단 하 는 데 사 용 됩 니 다.
. slurp 는 파일 의 모든 내용 을 읽 는 데 사 용 됩 니 다.
다음은 제 이 슨 파일 의 해석 입 니 다. JSON: Fast 모듈 의 해석 은 간단 합 니 다.
1 my $json;
2
3 try {
4 $json = from-json($json-slurp);
5 CATCH {
6 default {
7 "User config has error".say();
8 "Stack ----->".say();
9 ...
10 }
11 }
12 }
try {CATCH {}} perl 6 의 이상 처리 입 니 다. 알 고 싶 은 것 은 perl 6 의 계시 록 을 보 세 요. json 이 잘못 해석 하면 이상 을 받 습 니 다. 그리고... 무 너 진 스 택 정 보 를 출력 합 니 다.
분석 에 성공 하면 $json 은 우리 가 분석 한 json 파일 을 대표 합 니 다. say 로 $json. WHAT 를 인쇄 하면 hash 라 는 것 을 알 게 될 것 입 니 다.
그리고 제 이 슨 의 요소, 배열 을 가 져 옵 니 다.
1 my $user-list;
2
3 if $json{'user-list'}:exists {
4 $user-list = $json{'user-list'};
5
6 say $user-list.elems;
7 say $user-list[0];
8 say $user-list[1];
9 }
첫 번 째 문장 은 hash 에 요소 user - list 가 있 는 지 확인 합 니 다. 요 소 를 꺼 내 고 출력 하면
username otheruser
하나의 배열 이기 때문에. elems 를 사용 하여 배열 의 요소 의 개 수 를 가 져 올 수 있 습 니 다. 아래 표 시 를 사용 하여 단독 항목 을 가 져 올 수 있 습 니 다.
그리고 같은 요 소 를 얻 을 수 있 습 니 다.
1 if $json{$user-list[0]}:exists {
2 my $info = $json{$user-list[0]};
3
4 say $info{'ip'};
5 }
그리고 요소 의 저장 은 hash 이기 때문에 다음은 간단 합 니 다. $json 요 소 를 가 져 오 는 것 처럼 $info 요 소 를 가 져 오 면 됩 니 다.이 예 는 username 의 ip 값 을 출력 합 니 다.
192.168.0.100
그러면 JSON:: Fast 의 해석 사용 은 여기까지 입 니 다. 구체 적 인 사용 도 JSON:: Fast 홈 페이지 를 보 세 요.
https://github.com/timo/json_fast/
마지막 으로 전체 코드 를 첨부 합 니 다.
#!/usr/bin/perl6
sub MAIN(Str :c(:$config-file), *@file) {
if +@file == 0 {
say "No file argument";
return;
}
my $json-path = IO::Path.new($config-file);
if (!($json-path.e && $json-path.r)) {
say "Config file not exist path -> $json-path";
exit
}
my $json-slurp = $json-path.slurp();
say "Read config file $config-file";
say $json-slurp;
my $json;
try {
$json = from-json($json-slurp);
CATCH {
default {
"User config has error".say();
"Stack ----->".say();
...
}
}
}
say $json.WHAT;
say $json;
my $user-list;
if $json{'user-list'}:exists {
$user-list = $json{'user-list'};
say $user-list.elems;
say $user-list[0];
say $user-list[1];
}
if $json{$user-list[0]}:exists {
my $info = $json{$user-list[0]};
say $info{'ip'};
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
perl 6 JSON:: Fast 모듈 json 해석 사용JSON 은 매우 작고 해석 하기 도 간단 하기 때문에 저 는 설정 파일 을 JSON 형식 으로 자주 구성 합 니 다. perl 6 의 ftp 자동 업로드 애플 릿 을 만 들 려 고 했 는데 오늘 반나절 동안 반 을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.