perl 6 JSON:: Fast 모듈 json 해석 사용

16001 단어 json 해석
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'};

    }

}

좋은 웹페이지 즐겨찾기