如何在php

时间:2016-12-17 21:05:27

标签: php mysql json

我想获得像http://api.androidhive.info/json/movies.json这样的JSON输出,我用PHP编写了这段代码:

<?php
    $con=mysqli_connect("localhost","root","","ebrahim");
    $sql="SELECT * FROM movie";
    $result=mysqli_query($con,$sql);
    $response= array();
    while($row=mysqli_fetch_array($result,MYSQLI_NUM)){
        $product = array();
        $product["title"]=$row[1];
        $product["image"]=$row[2];
        $product["rating"]=$row[3]; 
        $product["releaseyear"]=$row[4]; 
        $product["genre"]=$row[5];   
        array_push($response,$product);
    }
    echo json_encode($response);
?>

但我的输出是这样的:enter image description here

请帮我制作一个标准的JSON。

3 个答案:

答案 0 :(得分:2)

我不完全确定“标准”JSON的含义。您的输出已经是JSON。但是,如果要为浏览器(或任何其他客户端)提供有关内容的提示,请设置正确的内容类型。正如Bart指出的那样,可以通过添加适当的标题来完成:

header('Content-Type: application/json');

此外,如果您想要JSON输出的“漂亮”格式,请使用json_encode的options参数:选项JSON_PRETTY_PRINT应该有助于实现这一目标。所以不应该echo json_encode($response);而应该放

echo json_encode($response, JSON_PRETTY_PRINT);

进入你的脚本。自PHP 5.4起可以使用JSON_PRETTY_PRINT

答案 1 :(得分:2)

var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); function RotatingImage(x, y, spriteUrl, rotationSpeed) { this.XPos = x; this.YPos = y; this.Sprite = new Image(); this.Sprite.src = spriteUrl; this.RotationSpeed = rotationSpeed; this.CurrentRotation = 0; } RotatingImage.prototype.Draw = function(ctx) { ctx.save(); this.CurrentRotation += 0.1; ctx.translate(this.XPos + this.Sprite.width/2, this.YPos + this.Sprite.height/2); ctx.rotate(this.CurrentRotation); ctx.translate(-this.XPos - this.Sprite.width/2, -this.YPos - this.Sprite.height/2); ctx.drawImage(this.Sprite, this.XPos, this.YPos); ctx.restore(); } var RotatingImages = []; RotatingImages.push(new RotatingImage(50, 75, "http://static.tumblr.com/105a5af01fc60eb94ead3c9b342ae8dc/rv2cznl/Yd9oe4j3x/tumblr_static_e9ww0ckmmuoso0g4wo4okosgk.png", 1)); RotatingImages.push(new RotatingImage(270, 25, "http://static.tumblr.com/105a5af01fc60eb94ead3c9b342ae8dc/rv2cznl/Yd9oe4j3x/tumblr_static_e9ww0ckmmuoso0g4wo4okosgk.png", 1)); RotatingImages.push(new RotatingImage(190, 180, "http://static.tumblr.com/105a5af01fc60eb94ead3c9b342ae8dc/rv2cznl/Yd9oe4j3x/tumblr_static_e9ww0ckmmuoso0g4wo4okosgk.png", 1)); RotatingImages.push(new RotatingImage(100, 270, "http://static.tumblr.com/105a5af01fc60eb94ead3c9b342ae8dc/rv2cznl/Yd9oe4j3x/tumblr_static_e9ww0ckmmuoso0g4wo4okosgk.png", 1)); setInterval(function() { ctx.fillStyle = "#000" ctx.fillRect(0, 0, canvas.width, canvas.height); for (var i = 0; i < RotatingImage.length; i++) { var rotatingImage = RotatingImages[i]; rotatingImage.Draw(ctx); } }, (1000 / 60));

echo json_encode($response, JSON_PRETTY_PRINT);常量作为JSON_PRETTY_PRINT函数的第二个参数传递。

此外,使用以下代码将响应的内容类型设置为JSON格式:

json_encode

因此,浏览器认识到响应是JSON资源。

答案 2 :(得分:0)

PHP有一个功能。使用JSON_PRETTY_PRINT,您可以阅读更多相关信息here