Na andyrusterholz at g-m-a-i-l dot c-o-mwspomnianej stronie jest post, który może również obsługiwać złożone zagnieżdżone tablice (jeśli to twoja sprawa).
Mam ten kod while ($ row = mysql_fetch_assoc ($ query_insert)) {$ control = array ('regione' => $ row ["regione"], 'totale' => $ row ["prezzi"]); } print (json_encode (% control)); ale retun {"regione": "Puglia", "totale": "5.15"} nie [{..}, {..}]
Mimmo
2
Dodaj 1 jako odniesienie do cytryny. :-)
ban-geoengineering
Zrobiłem to, ale odpowiedź, którą otrzymuję za pomocą funkcji var_dumb, jest następująca. Jak pozbyć się stringa (59)? string (59) "[{" result ":" success "}, {" message ":" Data updated! "}]"
James Smith
115
Użyj natywnego języka PHP json_encode, na przykład:
Przepraszam, ale jeśli chcę {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} ??
Mimmo,
41
Proste: po prostu utwórz (zagnieżdżoną) tablicę PHP i wywołaj json_encodeją. Tablice numeryczne są tłumaczone na listy JSON ( []), tablice asocjacyjne i obiekty PHP są tłumaczone na obiekty ( {}). Przykład:
Przepraszam, ale jeśli chcę {"nome_array": [{"foo": "bar"}, {"foo": "baz"}]} ??
Mimmo,
2
Przeczytaj ponownie mój post. Jeśli chcesz, aby coś zostało przetłumaczone na obiekt JSON, zrób z tego tablicę asocjacyjną w PHP (gdzie klucze są łańcuchami). Jeśli chcesz, aby zostało przetłumaczone na listę JSON, zrób z niej zwykłą tablicę (z niejawnymi kluczami całkowitymi). Wartość każdego elementu tablicy może być z kolei tablicą, a tego chcesz.
tdammers
Dzięki temu również odpowiedziałem na moje pytanie.
Shawn Wernig
Zrobiłem to, ale odpowiedź, którą otrzymuję za pomocą funkcji var_dumb, jest następująca. Jak pozbyć się stringa (59)? string (59) "[{" result ":" success "}, {" message ":" Data updated! "}]"
James Smith
13
Najlepszym sposobem tworzenia json w php za każdym razem jest konwersja wartości w tablicy ASSOCIATIVE.
Następnie po prostu zakoduj używając json_encode($associativeArray). Myślę, że jest to najlepszy sposób na utworzenie json w php, ponieważ za każdym razem, gdy pobieramy wynik z zapytania sql w php, przez większość czasu otrzymujemy wartości za pomocą fetch_assocfunkcji, która również zwraca jedną tablicę asocjacyjną.
Tak właśnie jestem w stanie zrobić przy pomocy rozwiązania podanego przez @tdammers poniżej. Następująca linia zostanie umieszczona wewnątrz każdej pętli.
Wystarczy wpisać ten pojedynczy wiersz, aby otrzymać tablicę json,
echo json_encode($array);
Zwykle używasz json_encodedo odczytywania danych z aplikacji na iOS lub Androida. więc upewnij się, że nie powielasz niczego innego niż dokładna tablica json.
Stworzyłem surową i prostą klasę jsonOBJ do użycia w moim kodzie. PHP nie zawiera funkcji json, takich jak JavaScript / Node. Musisz iterować inaczej, ale może to być pomocne.
<?php
// define a JSON Object classclass jsonOBJ {private $_arr;private $_arrName;function __construct($arrName){
$this->_arrName = $arrName;
$this->_arr[$this->_arrName]= array();}function toArray(){return $this->_arr;}function toString(){return json_encode($this->_arr);}function push($newObjectElement){
$this->_arr[$this->_arrName][]= $newObjectElement;// array[$key]=$val;}functionadd($key,$val){
$this->_arr[$this->_arrName][]= array($key=>$val);}}// create an instance of the object
$jsonObj =new jsonOBJ("locations");// add items using one of two methods
$jsonObj->push(json_decode("{\"location\":\"TestLoc1\"}",true));// from a JSON String
$jsonObj->push(json_decode("{\"location\":\"TestLoc2\"}",true));
$jsonObj->add("location","TestLoc3");// from key:val pairs
echo "<pre>". print_r($jsonObj->toArray(),1)."</pre>";
echo "<br />". $jsonObj->toString();?>
// return a JSON Object (jsonOBJ) from the rowsfunctionParseRowsAsJSONObject($arrName, $rowRS){
$jsonArr =new jsonOBJ($arrName);// name of the json array
$rows = mysqli_num_rows($rowRS);if($rows >0){while($rows >0){
$rd = mysqli_fetch_assoc($rowRS);
$jsonArr->push($rd);
$rows--;}
mysqli_free_result($rowRS);}return $jsonArr->toArray();}
Odpowiedzi:
Easy peasy lemon squeezy: http://www.php.net/manual/en/function.json-encode.php
Na
andyrusterholz at g-m-a-i-l dot c-o-m
wspomnianej stronie jest post, który może również obsługiwać złożone zagnieżdżone tablice (jeśli to twoja sprawa).źródło
Użyj natywnego języka PHP
json_encode
, na przykład:Aktualizacja : aby odpowiedzieć na twoje pytanie w komentarzu. Robisz to tak:
źródło
Proste: po prostu utwórz (zagnieżdżoną) tablicę PHP i wywołaj
json_encode
ją. Tablice numeryczne są tłumaczone na listy JSON ([]
), tablice asocjacyjne i obiekty PHP są tłumaczone na obiekty ({}
). Przykład:Daje Ci:
źródło
Najlepszym sposobem tworzenia json w php za każdym razem jest konwersja wartości w tablicy ASSOCIATIVE.
Następnie po prostu zakoduj używając
json_encode($associativeArray)
. Myślę, że jest to najlepszy sposób na utworzenie json w php, ponieważ za każdym razem, gdy pobieramy wynik z zapytania sql w php, przez większość czasu otrzymujemy wartości za pomocąfetch_assoc
funkcji, która również zwraca jedną tablicę asocjacyjną.... itd.
Po tym.
źródło
również dla tablicy możesz użyć krótkiej adnotacji:
źródło
Tak właśnie jestem w stanie zrobić przy pomocy rozwiązania podanego przez @tdammers poniżej. Następująca linia zostanie umieszczona wewnątrz każdej pętli.
Następnie zakoduj tablicę za pomocą funkcji kodowania json
źródło
Wystarczy wpisać ten pojedynczy wiersz, aby otrzymać tablicę json,
echo json_encode($array);
Zwykle używasz
json_encode
do odczytywania danych z aplikacji na iOS lub Androida. więc upewnij się, że nie powielasz niczego innego niż dokładna tablica json.źródło
źródło
źródło
Stworzyłem surową i prostą klasę jsonOBJ do użycia w moim kodzie. PHP nie zawiera funkcji json, takich jak JavaScript / Node. Musisz iterować inaczej, ale może to być pomocne.
Wyświetli:
Aby wykonać iterację, przekonwertuj na normalny obiekt:
Następnie:
Wyjścia:
TestLoc1
TestLoc2
TestLoc3
Dostęp bezpośredni:
Praktyczny przykład:
źródło