如何在codeigniter中更改json值数据的格式

时间:2018-03-23 08:35:52

标签: php json codeigniter

我正在尝试使用预定义的json格式显示插件的数据,但是在我尝试数据后格式不匹配问题怎么样?

需要JSON

$input = Import-Csv "C:\input.csv"

$Vulnerabilities = $input | Group-Object -Property Vulnerability -AsHashTable -AsString

foreach ($Vulnerability in ($Vulnerabilities.Keys | Sort-Object)) {

    $row = [PSCustomObject]@{
        "Hostname"                  = (($Vulnerabilities.$Vulnerability.HostName) -join ', ')
        "IP Address"                = (($Vulnerabilities.$Vulnerability."Host IP") -join ',')
        "Vulnerability Base Rating" = ($Vulnerabilities.$Vulnerability)[0]."Risk Level"
        "Detection Method"          = "OpenVAS"
        "Vulnerability Name"        = $Vulnerability
    }

    Export-Csv -InputObject $row -Path "C:\output.csv" -Append -NoTypeInformation
}

结果我的JSON

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

myscript PHP

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

调用JSON

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);    
}

1 个答案:

答案 0 :(得分:3)

您可以使用explode()将字符串"-6.17343444,1206.834234294"转换为数组[-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);    
}

如果你想得到浮点数(对于JSON中的所有值),你可以使用JSON_NUMERIC_CHECK

json_encode($data, JSON_NUMERIC_CHECK);

或者,仅针对特定值:

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