Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> JSON encode "true" zamiast true
topcio
post 9.12.2022, 18:15:55
Post #1





Grupa: Zarejestrowani
Postów: 140
Pomógł: 0
Dołączył: 14.01.2017

Ostrzeżenie: (0%)
-----


Hej

Czy ktoś może mi pomóc dlaczego w wyniku json_encode dosateje

  1. "zmienna_1": "true",


zamiast

  1. "zmienna_1": true,


dobra sorry już znalazłem odpowiedź

wystarczyło dodać do zmiennej (bool)

smile.gif

Nie mniej to nie rozwiązuje mojego problemu, ponieważ dla wartości innych niż true/false również konwertuje mi do bool a tak nie ma być sad.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Tomplus
post 10.12.2022, 13:27:03
Post #2





Grupa: Zarejestrowani
Postów: 1 838
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Odpowiadając na pierwszy post, skoro używasz json_encode, to przy

[php]$foo = ['a'=>1, 'b'=>true, 'c'=>false, 'd' => new stdClass, 'e'=>'stop'];
$json = json_encode($foo);
print($json);
var_dump(json_decode($json, true));/php]

to wynikiem są:

Kod
{"a":1,"b":true,"c":false,"d":{},"e":"stop"}
array(5) {
  ["a"]=>
  int(1)
  ["b"]=>
  bool(true)
  ["c"]=>
  bool(false)
  ["d"]=>
  array(0) {
  }
  ["e"]=>
  string(4) "stop"
}


klucz o wartości b i c podają wartości bool, a nie string.

Do sprawdzenia wartości przychodzących z _POST lub _GET lepiej użyć: filter_var($foo['b'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)
Szczególnie, że rozpatruje także pozytywnie wartości 'on', '1' jako true, a czasem przy wysyłaniu do skryptu wartości przez JS mogą być wysłane właśnie takie wartości dla prawdy lub fałszy np. z formularza radio lub checkbox.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 00:25