Laravel 5 controller senden JSON integer als string

Auf meinem Entwicklungs-server die JSON-Antwort vom Laravel 5 controller zeigt die Daten in die richtigen Typen.

e.g

imdb_rating: 7.6
imdb_votes: 6271

Aber auf den Produktions-server, der JSON-Antwort zurück geschickt als strings.

imdb_rating: "7.60"
imdb_votes: "6271"

Sowohl die Entwicklung und Produktion, die gleiche version von PHP installiert (5.6.11-1).

Irgendwelche Ideen auf, was verursacht dieses Verhalten?

  • Die Daten kommen aus der mysql-Tabelle?
  • Ja
  • Klingt vielleicht blöd, aber können Sie überprüfen, ob Sie mit dem MySQL Native Driver (mysqlnd) auf beiden Maschinen? MySQL Client Library-Treiber der Rückkehr alle Felder als Zeichenketten unabhängig von der Art, was nicht der Fall ist bei der Verwendung von MySQL-Native-Treiber
  • Gut, mit der PHP-version 5.6, die Sie vermutlich nicht.
  • Haben Sie versucht, die return response()->json(["foo" => "bar"], 200, [], JSON_NUMERIC_CHECK); ?
  • du hast Recht - die Produktion-system war nicht mit dem nativen Treiber!
  • könnten Sie poste es als Antwort.
  • Ich habe eine Antwort. Könnte gut sein, für andere, die kommen über diese.
  • Seien Sie vorsichtig bei der Verwendung der JSON_NUMERIC_CHECK Flagge. Wenn Sie Zeichenfolgen wie "004004004" in Ihrer Datenbank (eine Telefonnummer zum Beispiel), die json-Antwort wird analysiert als "4004004"

InformationsquelleAutor Muggles | 2015-07-20
Schreibe einen Kommentar