2016-06-07 6 views
1

ich zu Hotels API arbeite, die Daten in JSON Form senden muss,Wie man richtig Daten als JSON-Format

Aber meine JSON Form ist falsch und das API nicht funktioniert.

Mein Code ist: -

$json = json_encode([ 
    'RoomGuests' => [ json_encode(["NoOfAdults"=> 1,"NoOfChild"=> 0,"ChildAge"=> null])], 
]); 

Und meine Ausgabe ist: -

{ 
"RoomGuests": [ 
"{\"NoOfAdults\":1,\"NoOfChild\":0,\"ChildAge\":null}" 
] } 

Und ich möchte das Ergebnis wie folgt aus: -

{ 
"RoomGuests": [{ 
    "NoOfAdults": 1, 
    "NoOfChild": 0, 
    "ChildAge": null 
}], } 

mir bitte mitteilen, wie um dieses Problem zu lösen.

+0

Lesen Sie mehr über 'JSON options' hier http://php.net /manual/ru/json.constants.php. Ich benutze 'json_encode ($ array, 352);' in den meisten Fällen. –

+0

Sie brauchen den zweiten Aufruf von 'json_encode()' nicht. Der erste Aufruf wird alle verschachtelten Arrays serialisieren. – cyfur01

+0

Versuchen Sie die Antwort unten gegeben ... hoffe, es wird Ihnen helfen :) –

Antwort

2

verwenden

$json = json_encode([ 
    'RoomGuests' => [["NoOfAdults"=> 1,"NoOfChild"=> 0,"ChildAge"=> null]], 
]); 

echo $json; 

Dies wird Ergebnisse in

{ 
    "RoomGuests": [ 
     { 
      "NoOfAdults": 1, 
      "NoOfChild": 0, 
      "ChildAge": null 
     } 
    ] 
} 
0

Dies ist mein Code, der die Ausgabe in json drucken format.You es wie pro Ihr bearbeiten:

<?php 
include_once('connect.php'); 
{ 


    error_reporting(error_reporting() & ~E_NOTICE); 

      $id = $_GET['id']; 
      $name = $_GET['name']; 
      $date = $_GET['date']; 

    $select = "select * from details"; 
    $sel = "select id,name from details"; 

    $res = mysqli_query($con, $select); 
    $result = mysqli_query($con,$sel); 



while($row = mysqli_fetch_object($res)) 
{ 
    $output[] = $row; 
} 
    if(empty($output)) 
    { 

     print(json_encode("User doesn't exist")); 
    } 
    else{ 
     while($col = mysqli_fetch_object($result)) 
     { 
      $output[] = $col; 
     } 
     if(empty($output)) 
     { 
      print(json_encode("User doesn't exits")); 

     } 
     else{ 
      print(json_encode($output)); 
     } 
    } 
} 

?> 
+1

Sie könnten zumindest den Code ändern, so wird es OP helfen, ihn nicht zu verwirren. – pbalazek

1

Für eine korrekte Ausgabe statt:

$json = json_encode([ 
    'RoomGuests' => [ json_encode(["NoOfAdults"=> 1,"NoOfChild"=> 0,"ChildAge"=> null])], 
]); 

genug zu machen:

$json = json_encode([ 
    'RoomGuests' => [ ["NoOfAdults"=> 1,"NoOfChild"=> 0,"ChildAge"=> null] ], 
]); 

json_encode wird rekursiv alle Sub-Arrays codieren. Es reicht also, nur einmal anzurufen.

0
<?php 

$a = (object)[ 
    'RoomGuests' => [ 
     (object)["NoOfAdults"=> 1,"NoOfChild"=> 0,"ChildAge"=> null] 
    ], 
]; 
var_export(json_encode($a)); 

Ergebnis:

{"RoomGuests":[{"NoOfAdults":1,"NoOfChild":0,"ChildAge":null}]}