JSON-LINQ
view release on metacpan or search on metacpan
doc/json_linq_cheatsheet.TW.txt view on Meta::CPAN
======================================================================
JSON::LINQ éæ¥è¡¨ [TW] 䏿ï¼ç¹é«ï¼
======================================================================
[ 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}]');
# 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 })
[ 3. æå½± ]
->Select(sub { $_[0]{name} })
->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ç
[ 6. åçµ ]
my @groups = $q->GroupBy(sub { $_[0]{category} })->ToArray();
my $lookup = $q->ToLookup(sub { $_[0]{dept} });
[ 7. èåï¼çµç«¯æ¹æ³ï¼ ]
->Count() # å
ç´ æ¸é
->Sum(sub { $_[0]{amount} }) # å 總
->Average(sub { $_[0]{score} }) # å¹³åå¼ï¼ç©ºådieï¼
->Min(sub { $_[0]{price} }) # æå°å¼
->Max(sub { $_[0]{price} }) # æå¤§å¼
->First() ->FirstOrDefault() # 第ä¸åå
ç´
->Last() ->LastOrDefault() # æå¾ä¸åå
ç´
->Any() ->All(sub { ... }) # éè©
->ForEach(sub { print $_[0] }) # éä¸å·è¡
[ 8. è¼¸åºæ¹æ³ ]
->ToJSON('output.json') # 寫åºJSONé£åæª
->ToJSONL('output.jsonl') # 寫åºJSONLæª
->ToLTSV('output.ltsv') # write as LTSV file (all keys, alphabetical)
->ToLTSV('out.ltsv', label_order=>[qw(a b c)]) # emit specified labels in order
( run in 1.030 second using v1.01-cache-2.11-cpan-140bd7fdf52 )