The string used below in "$myArrEncoded" is generated in javascript, after creating the structure and spitting out: var JSONVar = javascriptVar.toSource(); I can eval JSONVar and work with it as I would be working with the original javascriptVar so I know the transition back and forth from a structure to a string isn't causing problems. The problem is when I try to work with the string in PHP. Here is my code: <?php $myArrEncoded = "({Salary:{'50-70K':{filterType:"range", fieldName:"SALARY", fieldValueLabel:"50-70K", lowerValue:"50", upperValue:"70", inclusive:"BOTH"}}, Position:{Developer:{filterType:"single", fieldName:"POSITION", fieldValueLabel:"Developer", fieldValue:"Developer", constraint:"equals"}, SysAdmin:{filterType:"single", fieldName:"POSITION", fieldValueLabel:"System Admin", fieldValue:"SysAdmin", constraint:"equals"}}, 'Required Action':{'2 - GenScreen':{filterType:"single", fieldName:"REQUIRED_ACTION", fieldValueLabel:"General Phone Screen", fieldValue:"2 - GenScreen", constraint:"equals"}}})"; echo var_dump( $myArrEncoded ) . '<br><br>'; echo '$myArr encoded: ' . $myArrEncoded . '<br><br>'; try { echo '$myArr decoded: <pre>' . print_r( json_decode( $myArrEncoded, TRUE ), TRUE ) . '</pre><br><br>'; } catch( Exception $e ) { echo 'Error: ' . var_dump( $e ); } ?> When I run it, I get the following output: -------------------------------------------------------------------------------- string(587) "({Salary:{'50-70K':{filterType:"range", fieldName:"SALARY", fieldValueLabel:"50-70K", lowerValue:"50", upperValue:"70", inclusive:"BOTH"}}, Position:{Developer:{filterType:"single", fieldName:"POSITION", fieldValueLabel:"Developer", fieldValue:"Developer", constraint:"equals"}, SysAdmin:{filterType:"single", fieldName:"POSITION", fieldValueLabel:"System Admin", fieldValue:"SysAdmin", constraint:"equals"}}, 'Required Action':{'2 - GenScreen':{filterType:"single", fieldName:"REQUIRED_ACTION", fieldValueLabel:"General Phone Screen", fieldValue:"2 - GenScreen", constraint:"equals"}}})" $myArr encoded: ({Salary:{'50-70K':{filterType:"range", fieldName:"SALARY", fieldValueLabel:"50-70K", lowerValue:"50", upperValue:"70", inclusive:"BOTH"}}, Position:{Developer:{filterType:"single", fieldName:"POSITION", fieldValueLabel:"Developer", fieldValue:"Developer", constraint:"equals"}, SysAdmin:{filterType:"single", fieldName:"POSITION", fieldValueLabel:"System Admin", fieldValue:"SysAdmin", constraint:"equals"}}, 'Required Action':{'2 - GenScreen':{filterType:"single", fieldName:"REQUIRED_ACTION", fieldValueLabel:"General Phone Screen", fieldValue:"2 - GenScreen", constraint:"equals"}}}) $myArr decoded: ({Salary:{'50-70K':{filterType:"range", fieldName:"SALARY", fieldValueLabel:"50-70K", lowerValue:"50", upperValue:"70", inclusive:"BOTH"}}, Position:{Developer:{filterType:"single", fieldName:"POSITION", fieldValueLabel:"Developer", fieldValue:"Developer", constraint:"equals"}, SysAdmin:{filterType:"single", fieldName:"POSITION", fieldValueLabel:"System Admin", fieldValue:"SysAdmin", constraint:"equals"}}, 'Required Action':{'2 - GenScreen':{filterType:"single", fieldName:"REQUIRED_ACTION", fieldValueLabel:"General Phone Screen", fieldValue:"2 - GenScreen", constraint:"equals"}}}) -------------------------------------------------------------------------------- Why isn't json_decode() converting the string to an array? Is there something extra in there that json_decode() can't deal with? I can work with it fine in javascript... :( thnx, Christoph