txt: ## dist_github-salortiz-JsonC.md
  # JsonC
  
  Using NativeCall this module binds to the popular json-c library, offering a different
  approach to JSON handling in Perl6.
  
  In adition to the traditional `to-json` and `from-json` routines this module provides
  a `JSON` class.
  
  ## Usage
  
  ```
  use JsonC;
  
  # The traditional API use the same semantincs of other JSON modules.
  
  my %h = from-json('{ "foo": "mamá", "arr": [ 1, 4, 10 ] }');
  
  my $str = to-json(%h, :pretty);
  
  ```
  
  So JsonC can be used as a drop-in replacement, see "pros" and "cons" ahead.
  
  If you need finer grained control over the process, or the JSON data is big,
  you can use the full power of this module:
  
  ```
  use JsonC;
  
  my $json = JSON.new-from-file('foo.json');
  
  given $json {
      when Associative {
         # You got an object.
         say $_<foo>;
         say so $_<bar>:exists;
         for %$_.pairs {
              # Do someting
         }
      }
      when Positional {
         # You got an array
         my @a := $_;         # You can bind to one
         say @a[10..20];
  
         say @a.elems;        # How many
  
         my $foo = @a.shift;
  
         # But beware:
         say so @a ~~ Array;  # False, not a Perl6's Array
         say so @a ~~ JSON-P; # True   but a JSON Positional
  
         # Need a real Array?
         my @foo = @a;         # Do a copy to an Array;
         my @bar := Array(@a); # Or cast to one, better
      }
      when Int { ... }
      when Bool { ... }
      when Str { ... }
      when Any { ... } # null
  }
  
  ```
  