Por que json_decode ($ data, TRUE) está convertendo uma matriz em uma string?

Código JavaScript:

$.ajax({
  type: "POST",
  url: "postTestingResult.php",
  data: {data: JSON.stringify(sendData)},
  dataType: "json",
  success: ajaxSuccess,
  error: ajaxError
});

Código PHP

$data = json_decode($_POST['data'], TRUE);

Quando POSTAR uma estrutura de dados complexa para o servidor, a matriz mais externa está se tornando uma sequência. Por exemplo, o objeto JavaScript pode ser

var data = {"apps": [[1,2,3], [4,5,6]]}

Usando JSON.stringify (data), isso se torna

"{"apps": "[[1,2,3], [4,5,6]]"}" //As seen via console.log(data) in Chrome console

Mas depois de executar o json_decode ($ _ POST ['data'], TRUE), torna-se

array('apps' => '[[1,2,3], [4,5,6]]') //As seen via var_export($data, TRUE)

Oque esta acontecendo aqui? Por que a matriz está sendo convertida em uma string? Para ver o objeto JSON completo e o objeto PHP completoconfira esta pasta com os dois.

Qualquer ajuda é muito apreciada, obrigado.

UPDATE: Resposta encontrada Eu encontrei o principal culpado. Também estou usando Prototype.js e ele estava adicionando um método toJSON aos protótipos de objetos.Confira esta questão SO para obter detalhes.

questionAnswers(1)

yourAnswerToTheQuestion