0

PHP を使用して SQL SELECT ステートメントの結果を JSON エンコードしようとしていますが、エンコードする前に配列を正しくフォーマットしているかどうかわかりません。

私のPHPコードは次のとおりです。

$stmt = $this->db->prepare('SELECT  CLINIC.clinic_name AS "clinicname" FROM CLINIC ORDER BY CLINIC.clinic_name ASC');

$stmt->execute();
$stmt->bind_result($clinicname);            
$test = array();                   
while($stmt->fetch()){
    $tempArray = array('clinicname' => $clinicname);
    array_push($test, $tempArray);
}
$stmt->close();

// Return clinics, encoded with JSON
header('Content-type: application/json');

$json = json_encode($test);
echo $json;

この配列の作成とエンコードの結果は次のとおりです。

[{"clinicname":"Bangor"},{"clinicname":"Belfast"},{"clinicname":"Crumlin"},{"clinicname":"Londonderry"}]

だから私は配列の配列を持っています。

これは JSON として送信しても問題ありませんか? 私が見るすべての例は、単一の配列のようです。私はこれまでのところ正しいですか?

ではiOSの場合、受け取るオブジェクトはNSDictionaryなのかNSArrayなのか。

上記に関するヘルプやフィードバックは大歓迎です。

  • マット。
4

3 に答える 3

0

はい、配列の配列を送信できます。次の方法でアクセスできます。

$response = json_decode($response,true);

  foreach ($response as $resp)
  {
    echo "<br>";
    print_r($resp);
  }  

json の例:

[{"id":"38","first_name":"prueba","second_name":"example","first_surname":"prueba","second_surname":"GONZALEZ","email":"x@x.net","network_login":"x.x","pos_name":"x x","position":"1","active":"1"},{"vhur":"292","first_name":"c","second_name":"example","first_surname":"example","second_surname":null,"email":"example@example.com","network_login":"example.example","pos_name":"example example","position":"2","active":"1"}]
于 2012-05-03T15:39:38.367 に答える
0

はい、JSON は適切にフォーマットされています。次回は、JSON バリデーターを使用して確認できます。

また、json_encodingに関するいくつかの詳細。

[] は配列を表し、{} はオブジェクトを表します。

于 2012-05-03T15:35:02.457 に答える
0

iOS では、これが http リクエストの結果である場合、タイプは NSString になり、次のような方法で解析する必要があります。

http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html

次に、それを NSArray、NSDictionary NSString などに変換します。

于 2012-05-03T15:35:05.783 に答える