简体   繁体   中英

json string is not converting into object

Here is the server side code I am trying to send json

$x = array();
$timestamp = strtotime('22-09-2008'); 
$x["x"] = $timestamp;
$x["y"] = 22;

$val = '[{ "name": "weight", "dataPoints": ['.json_encode($x).'] }]';
echo json_encode($val);

So output for above code looks like

   "[{ \"name\": \"weight\", \"dataPoints\": [{\"x\":1222041600,\"y\":22}] }]"

Below is the client side code I get the data via Jquery getJSON

var jqxhr = $.getJSON( "https://domain/gettracker.php?id="+id, function(data) {

 console.log(data);

})

I suppose getJson converts json to object automatically , but it logs the raw json like below

"[ {  name: "weight", dataPoints: [{"x":1222041600,"y":22}] } ]"

I tried to do json parse , but i get error.

I guess I am not sending the data properly via php.Can some one guide me ?

Your JSON string is not valid - the property names should be enclosed in double quotes - " , and you don't need to encode the string again.

$val = '[{ "name": "weight", "dataPoints": ['.json_encode($x).'] }]';
echo $val;

Or better yet, use json_encode to create the string for you:

$data = array(
    'name' => 'weight',
    'dataPoints' => $x
);

echo json_encode($data);

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