简体   繁体   中英

json returning string instead of object

i have

 $age = implode(',', $wage);   // which is object return:  [1,4],[7,11],[15,11]
  $ww = json_encode($age);

and then i retrieve it here

    var age = JSON.parse(<?php echo json_encode($ww); ?>); 

so if i make

   alert(typeof(<?php echo $age; ?>))   // object
   alert(typeof(age))                   //string

in my case JSON.parse retuned as string.

how can i let json return as object?

EDIT:

 var age = JSON.parse(<?php echo $ww; ?>); // didnt work , its something syntax error

implode returns a string, so it is only natural that json_encode encodes it as such. It does not recognize already JSON-like data passed as a string.

If you want to get an object, you have to pass an associative array to json_encode :

$foo = array(
    1 => 4,
    7 => 11,
    15 => 11
);

echo json_encode($foo); // {1:4,7:11,15:11}

With so little info about what $wage looks like before it's imploded, it's hard to tell exactly what you want to get. How is that structure ( [1,4],[7,11],[15,11] ) an object? Is the first element of each tuple a key? That's what I assumed with my example, but it might be off.

a. You get a syntax error because you need to enclose the string within quotes, like so:

var age = JSON.parse("<?php echo $ww; ?>");

b. Moreover, you don't need JSON.parse . You can simply echo the php var after it was already json_encoded in the server side:

var age = <?php echo $ww; ?>;

JSON.parse is there to convert a JavaScript string to an object. In the case of PHP string, once it is built as JSON, echoing it in the right place is equivalent to coding it yourself.

var age = [<?php echo $age; ?>];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM