irwan dwiyanto
irwan dwiyanto

Reputation: 690

how to change the format of json value data in codeigniter

I am trying to display data for a plugin with a predefined json format, but after I try the data does not match the format how the problem?

JSON Required

[
  {
    latLng: [-6.17343444,1206.834234294],
    name: 'XY'
  },
  {
    latLng: [-6.1742343244,106.898987294],
    name: 'XK'
  }
]

Result my JSON

[
  {
    "latLng": "-6.17343444,1206.834234294",
    "name": "XK"
  },
  {
    "latLng": "-6.1742343244,106.898987294",
    "name": "XY"
  }
]

myscript PHP

public function lat_lang() {
    foreach($this->model->name_model() as $row){    
        $data[] = array(
            'latLng' => $row->lat_long,
            'name' => $row->city
          );                                
    }
        header('content-type: application/json');   
        echo json_encode($data);    
}

call JSON

$.parseJSON('<?php echo base_url().'mycontrollers';?>', function(datas) {
    console.log(datas);
});

Upvotes: 0

Views: 238

Answers (1)

Syscall
Syscall

Reputation: 19764

You can use explode() to transform the string "-6.17343444,1206.834234294" into an array [-6.17343444,1206.834234294]:

public function lat_lang() {
    foreach($this->model->name_model() as $row){    
        $data[] = array(
            'latLng' => explode(',',$row->lat_long),
            'name' => $row->city
          );                                
    }
        header('content-type: application/json');   
        echo json_encode($data);    
}

If you want to get floats (for all value in the JSON), you could use JSON_NUMERIC_CHECK:

json_encode($data, JSON_NUMERIC_CHECK);

Or, just for a specific value:

$latLng = explode(',', $row->lat_long);
$latLng = array_map('floatval', $latLng);
$data[] = array(
    'latLng' => $latLng,
    'name' => $row->city
  ); 

Upvotes: 3

Related Questions