JSON-LINQ
view release on metacpan or search on metacpan
doc/json_linq_cheatsheet.ZH.txt view on Meta::CPAN
======================================================================
JSON::LINQ éæ¥è¡¨ [ZH] 䏿ï¼ç®ä½ï¼
======================================================================
[ 1. å建æ¥è¯¢ ]
use JSON::LINQ;
# ä»JSONæä»¶è¯»åï¼é¡¶å±ä¸ºæ°ç»ï¼
my $q = JSON::LINQ->FromJSON('data.json');
# ä»JSONLæä»¶è¯»åï¼æ¯è¡ä¸ä¸ªJSONå¯¹è±¡ï¼æµå¼ï¼
my $q = JSON::LINQ->FromJSONL('events.jsonl');
# ä»JSONå符串
my $q = JSON::LINQ->FromJSONString('[{"id":1},{"id":2}]');
# FromLTSV: read an LTSV file (label:value, TAB-separated, streaming)
my $q = JSON::LINQ->FromLTSV('data.ltsv');
# ä» CSV æä»¶è¯»åï¼ç¬¬ä¸è¡ä¸ºæ é¢è¡ï¼æµå¼ï¼
my $q = JSON::LINQ->FromCSV('data.csv');
my $q = JSON::LINQ->FromCSV('data.csv', sep => "\t"); # TSV
my $q = JSON::LINQ->FromCSV('f.csv', headers=>[qw(a b c)]); # æ æ é¢è¡
my $q = JSON::LINQ->FromCSV('f.csv', headers=>[qw(a b c)], skip_header=>1);
# ä»å
åæ°ç»
my $q = JSON::LINQ->From(\@array);
# 空åºå
my $q = JSON::LINQ->Empty();
# æ´æ°åºå: 1, 2, 3, 4, 5
my $q = JSON::LINQ->Range(1, 5);
# 注æï¼ç»ç«¯æ¹æ³ä¼æ¶èè¿ä»£å¨ï¼ééæ°è°ç¨åå»ºæ¹æ³
[ 2. è¿æ»¤ ]
->Where(sub { $_[0]{status} eq '200' })
->Where(sub { $_[0]{score} >= 80 })
->Where(sub { defined $_[0]{email} })
[ 3. æå½± ]
# Selectï¼è½¬æ¢æ¯ä¸ªå
ç´
->Select(sub { { path => $_[0]{url}, code => $_[0]{status} } })
->Select(sub { $_[0]{name} })
# SelectManyï¼å±å¼åµå¥æ°ç»ï¼éæ©å¨å¿
é¡»è¿åæ°ç»å¼ç¨ï¼
->SelectMany(sub { [ @{ $_[0]{tags} } ] })
[ 4. æåº ]
->OrderBy(sub { $_[0]{name} }) # ååºï¼æºè½ï¼
->OrderByDescending(sub { $_[0]{score} }) # éåºï¼æºè½ï¼
->OrderByNum(sub { $_[0]{price} }) # æ°å¼ååº
->OrderByStr(sub { $_[0]{code} }) # å符串ååº
->ThenBy(sub { $_[0]{name} }) # 次级ååº
->Reverse() # éåº
[ 5. å页 ]
->Skip(10) # è·³è¿å10æ¡
->Take(5) # åå5æ¡
->SkipWhile(sub { $_[0]{score} < 80 })
->TakeWhile(sub { $_[0]{score} >= 80 })
[ 6. åç» ]
my @groups = $q->GroupBy(sub { $_[0]{category} })->ToArray();
for my $g (@groups) {
printf "%s: %d\n", $g->{Key}, scalar @{$g->{Elements}};
}
my $lookup = $q->ToLookup(sub { $_[0]{dept} });
[ 7. èåï¼ç»ç«¯æ¹æ³ï¼ ]
->ToArray() # æ¶éææå
ç´
->Count() # å
ç´ æ°é
->Sum(sub { $_[0]{amount} }) # æ±å
->Average(sub { $_[0]{score} }) # å¹³åå¼ï¼ç©ºådieï¼
->Min(sub { $_[0]{price} }) # æå°å¼
->Max(sub { $_[0]{price} }) # æå¤§å¼
( run in 0.490 second using v1.01-cache-2.11-cpan-140bd7fdf52 )