Try:
$.ajax({
    url: '/Controller/ActionName',
    data: { items: JSON.stringify(list) }
});
I've tried the following options:
 <script type="text/javascript">
    var list = [
    { id: 1, name: 'Charles' }, 
    { id: 8, name: 'John' }, 
    { id: 13, name: 'Sally' }
];
  function run(){
      $.ajax({
          url: 'default.aspx',
          data: { items: JSON.stringify(list) }
      });
      return false;
  }
  function run2() {
      $.ajax({
          url: 'default.aspx',
          data: { items: list }
      });
      return false;
  }
  function run3() {
      $.ajax({
          url: 'default.aspx',
          data: { items: list },
          processData: false
      });
      return false;
  }
  function run4() {
      $.ajax({
          url: 'default.aspx',
          data: list
      });
      return false;
  }
</script>
Run 1: default.aspx?items=%5B%7B%22id%22%3A1%2C%22name%22%3A%22Charles%22%7D%2C%7B%22id%22%3A8%2C%22name%22%3A%22John%22%7D%2C%7B%22id%22%3A13%2C%22name%22%3A%22Sally%22%7D%5D
Querystring["items"] = '[{"id":1,"name":"Charles"},{"id":8,"name":"John"},{"id":13,"name":"Sally"}]'
Run 2: default.aspx?items%5B0%5D%5Bid%5D=1&items%5B0%5D%5Bname%5D=Charles&items%5B1%5D%5Bid%5D=8&items%5B1%5D%5Bname%5D=John&items%5B2%5D%5Bid%5D=13&items%5B2%5D%5Bname%5D=Sally
items[0][id]    1
items[0][name]  Charles
items[1][id]    8
items[1][name]  John
items[2][id]    13
items[2][name]  Sally
Run 3: default.aspx?[object%20Object]
[object Object] 
Run 4: default.aspx?Charles=undefined&John=undefined&Sally=undefined
Request["Charles"] = 'undefined'
Request["John"] = 'undefined'
Request["Sally"] = 'undefined'
Now from the OP, I think Run 1 is the required option as he wants to process the JSON string on the server side?