2011-11-11 16 views
5

So che questo è veramente semplice, ma ho cercato ovunque e non trovo la risposta giusta.Codifica JSON in PHP da utilizzare nell'app per iPhone

Con riferimento ad una precedente interrogazione di mine: How to format list in PHP to be used as an NSArray in Objective C?

Ho cercato di scrivere uno script PHP breve (sapere nulla su di esso) che il mio iphone app chiamerà al fine di ottenere un elenco di elementi. Ho pensato di usare ECHO, poiché NON AVREBBE DAVVERO bisogno di inviare più di una serie di elementi, ma è stato consigliato di usare JSON o XML, quindi ho scelto JSON.

Sto cercando un modo per codificare l'array su JSON e l'unica cosa che ho trovato era json_encode che non sembra fornire una struttura JSON. Ecco il mio codice PHP:

<?php 

$arr = array ('a', 'b','c','d','e'); 
echo json_encode($arr); 

?> 

È questo che dovrei usare? Sto facendo qualcosa di sbagliato? Molte grazie.

EDIT:

Quello è l'uscita durante l'esecuzione di questo script PHP nel terminale:

[ "a", "b", "c", "d", "e"]

Per quanto ne so, questa non è una struttura JSON, ma, di nuovo, non ne conosco quasi nulla.

+1

Se si effettua una richiesta URL su iOS con quello indirizzo della pagina si ottiene fondamentalmente la matrice codificato come JSON, allora si Cna decodificarlo in una NSArray su iOS – Daniel

+1

Perché credi che non è json_encode fornendo una struttura JSON? –

+0

@JasonMcClellan - guarda le mie modifiche. – TommyG

risposta

4

Questo è corretto per quanto ne so.

Un buon modo per testare se il vostro JSON è valido è quello di utilizzare http://jsonlint.com/

Elaborare:

$arr = array ('a'=>'a value', 'b'=>'b value','c'=>'c value'); 
echo json_encode($arr); 
$arr = array ('a', 'b','c'); 
echo json_encode($arr); 

dovrebbe darvi:

{"a":"a value","b":"b value","c":"c value"} 
["a","b","c"] 

Come sottolineato da @ Jason McClellan, anche il secondo è corretto.

Quindi sì, si sta facendo la cosa giusta per codificare una matrice in qualcosa di leggibile da javascript.

L'altra funzione è json_decode($json); che ovviamente decodifica JSON. documentazione qui: http://php.net/manual/en/function.json-encode.php

+2

JSON non richiede coppie chiave => valore. JSON è solo la sintassi JS. In questo esempio, ha codificato un array, quindi ciò che ha ottenuto è stata la sintassi JS per un array. Se usasse un array associativo, otterrebbe la sintassi JS per un oggetto anonimo, che è ciò che molti di noi sono abituati a vedere quando pensiamo a JSON. –

+1

ahh ... errore mio, grazie per quello, vedi risposta aggiornata – jammypeach