JSON-LINQ

 view release on metacpan or  search on metacpan

doc/json_linq_cheatsheet.MY.txt  view on Meta::CPAN

======================================================================
 JSON::LINQ အမြန်ကိုးကားချက်                           [MY] မြန်မာဘာသာ
======================================================================

[ 1. မေးမြန်းမှု ဖန်တီးခြင်း ]

  use JSON::LINQ;

  # JSON ဖိုင်မှ (အထက်ဆုံး array)
  my $q = JSON::LINQ->FromJSON('data.json');

  # JSONL ဖိုင်မှ (streaming)
  my $q = JSON::LINQ->FromJSONL('events.jsonl');

  # JSON string မှ
  my $q = JSON::LINQ->FromJSONString('[{"id":1},{"id":2}]');

  # LTSV ဖိုင်မှ (label:value, TAB-ပိုင်းခြား, streaming)
  my $q = JSON::LINQ->FromLTSV('data.ltsv');

  # CSV ဖိုင်မှ (ပထမအတန်း = ခေါင်းစဉ်၊ streaming)
  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);

  # Memory ထဲ array မှ
  my $q = JSON::LINQ->From(\@array);

  # ဗလာ sequence
  my $q = JSON::LINQ->Empty();

  # ကိန်းပြည့် sequence: 1, 2, 3, 4, 5
  my $q = JSON::LINQ->Range(1, 5);

  # ဒြပ်စင် N ကြိမ် ထပ်ခါတလဲလဲ
  my $q = JSON::LINQ->Repeat("x", 3);

  # မှတ်ချက်: Terminal method ခေါ်ပြီးနောက် iterator ကုန်သည်။
  # ပြန်မေးရန် From*/From ကို ထပ်ခေါ်ပါ။

[ 2. စစ်ထုတ်ခြင်း ]

  ->Where(sub { $_[0]{status} eq '200' })
  ->Where(sub { $_[0]{score} >= 80 })
  ->Where(sub { defined $_[0]{email} && $_[0]{email} ne '' })

[ 3. ပုံစံပြောင်းခြင်း ]

  # Select: ဒြပ်စင်တစ်ခုချင်းကို ပြောင်းလဲပါ
  ->Select(sub { { path => $_[0]{url}, code => $_[0]{status} } })
  ->Select(sub { $_[0]{name} })

  # SelectMany: Nested array ဖြန့်ပါ (selector သည် ARRAY ref ပြန်ရမည်)
  ->SelectMany(sub { [ @{ $_[0]{tags} } ] })

[ 4. စီစစ်ခြင်း ]

  # ပထမ key -- smart (နှစ်ဖက်လုံး ကိန်းဂဏာန်းနှင့် တူလျှင် ကိန်းဂဏာန်းဖြင့်)
  ->OrderBy(sub { $_[0]{name} })
  ->OrderByDescending(sub { $_[0]{score} })

  # ပထမ key -- ကိန်းဂဏာန်း နှိုင်းယှဉ်မှု အတင်း
  ->OrderByNum(sub { $_[0]{price} })
  ->OrderByNumDescending(sub { $_[0]{amount} })

  # ပထမ key -- string နှိုင်းယှဉ်မှု အတင်း (cmp)
  ->OrderByStr(sub { $_[0]{code} })
  ->OrderByStrDescending(sub { $_[0]{name} })

  # ဒုတိယ key (OrderBy* နောက် chain ချိတ်ဆက်)
  ->ThenBy(sub { $_[0]{name} })              # smart ascending
  ->ThenByDescending(sub { $_[0]{score} })   # smart descending
  ->ThenByNum(sub { $_[0]{age} })            # ကိန်းဂဏာန်း ascending
  ->ThenByNumDescending(sub { $_[0]{age} })  # ကိန်းဂဏာန်း descending
  ->ThenByStr(sub { $_[0]{name} })           # string ascending
  ->ThenByStrDescending(sub { $_[0]{name} }) # string descending

  ->Reverse()  # လက်ရှိ ကြည့်ရှုမှုကို ပြောင်းပြန်

[ 5. စာမျက်နှာ ခွဲခြင်း ]



( run in 0.963 second using v1.01-cache-2.11-cpan-140bd7fdf52 )