2016-09-26 11 views
-1

Ich habe die folgende Funktion, die Daten für mich erzeugt:Bereinigen Json URL-Daten

function get_project_time() { 
     $name; 
     $desc; 
     $values; 
     $to; 
     $from; 
     $sql = $this->db->query("Select * from tbl_project")->result(); 
     foreach ($sql as $value) { 

      $name = $value->project_name; 
      $desc = $value->project_status; 
      $start_date = $value->start_date; 
      $end_date = $value->end_date; 
      $unix_start_date = strtotime($start_date); 
      $unix_end_date = strtotime($end_date); 
      $to = "Date($unix_start_date)/"; 
      $from = "Date($unix_end_date)/"; 
      $e = new stdClass(); 
      $f = new stdClass(); 
      $e->name = $name; 
      $e->desc = $desc; 
      $f->to = $to; 
      $f->from = $from; 
      $e->values = array($f); 

      echo json_encode(array($e)); 
     } 
    } 

Die json Ausgabe in folgendem Format aussieht:

[{"name":"e-Campus and eLearning Project","desc":"in_progress","values":[{"to":"\/Date(1473627600)\/","from":"\/Date(1480626000)\/"}]}][{"name":"BloodLink Training Project","desc":"in_progress","values":[{"to":"\/Date(1474405200)\/","from":"\/Date(1475010000)\/"}]}][{"name":"Test Project","desc":"","values":[{"to":"\/Date(1474405200)\/","from":"\/Date(1475182800)\/"}]}] 

Ich möchte die Daten bereinigen so dass ich so etwas bekomme:

[{"name":"e-Campus and eLearning Project","desc":"in_progress","values":[{"to":"/Date(1473627600)/","from":"/Date(1480626000)/"}]}][{"name":"BloodLink Training Project","desc":"in_progress","values":[{"to":"/Date(1474405200)/","from":"/Date(1475010000)/"}]}][{"name":"Test Project","desc":"","values":[{"to":"/Date(1474405200)/","from":"/Date(1475182800)/"}]}] 

Bitte beraten, wie ich die JSON Daten reinigen kann?

+5

http://stackoverflow.com/questions/10210338/json-encode-escaping-forward-slashes –

+2

Sie tun es falsch. Sie tun 'echo json_encode (..)' innerhalb Ihrer Schleife, so dass Sie mehrere unabhängige JSON-Strings produzieren. Sie müssen ein Array/Objekt innerhalb der Schleife erstellen. Sie kodieren nur am Ende des Prozesses, wenn das Gebäude fertig ist. –

Antwort

0

Der meiste Code ist redundant/nutzlos. Sie könnten sich trivialer von Linien mit so etwas wie dies eine Menge sparen:

$sql = "SELECT project_name AS name, ... UNIX_TIMESTAMP(end_date) AS end_date etc..."; 

while($row = fetch()) { 
    $array[] = $row; 
} 

echo json_encode($array); 

ein Objekt Gebäude, nur damit Sie es auf ein Array typisieren können, ist äußerst verschwenderisch und verwirrend. Wenn Sie ein Array möchten, erstellen Sie ein Array. Fertig "Gebt mir eine Bigmac mit extra Salat" und wandeln Sie es anschließend in ein Filet 'o Fisch um.