将图像信息从服务器转换为json

时间:2015-01-09 18:43:17

标签: php json

帮助需要好友,我想将有关从数据库检索到的图像的信息转换为json格式。 以下是从数据库中获取图像信息的代码

// Query for a list of all existing files
$sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM `file`';
$result = $dbLink->query($sql);

// Check if it was successfull
if($result) {
// Make sure there are some files in there
if($result->num_rows == 0) {
    echo '<p>There are no files in the database</p>';
}
else {
    // Print the top of a table
    echo '<table width="100%">
            <tr>
                <td><b>Name</b></td>
                <td><b>Mime</b></td>
                <td><b>Size (bytes)</b></td>
                <td><b>Created</b></td>
                <td><b>&nbsp;</b></td>
            </tr>';

    // Print each file
    while($row = $result->fetch_assoc()) {
        echo "
            <tr>
                <td>{$row['name']}</td>
                <td>{$row['mime']}</td>
                <td>{$row['size']}</td>
                <td>{$row['created']}</td>
                <td><a href='get_file.php?id={$row['id']}'>Download</a></td>
            </tr>";
    }

    // Close table
    echo '</table>';
}

// Free the result
$result->free();
}
else
{
echo 'Error! SQL query failed:';
echo "<pre>{$dbLink->error}</pre>";
}

这是我想要实现的目标

{
"success": 1,
"message": "images Available",
"images": [
    {
        "Name": "richmahnn",
        "Mime": "ajh544k",
        "Size": "222",
        "Created": "232014",
        "url": "http://localhost/imageUpload/ajh544k.jpg"
    },
    {
        "Name": "john",
        "Mime": "ajh5644k",
        "Size": "15",
        "Created": "232014",
        "url": "http://localhost/imageUpload/ajh5644k.jpg"
    },
到目前为止,这是我得到的 enter image description here

2 个答案:

答案 0 :(得分:1)

  1. 使用JSON中所需的属性布局创建一个php数组。
  2. json_encode($ yourarraydata);
  3. ????
  4. #Win

答案 1 :(得分:1)

根据您所说的所需的JSON数据,这似乎是最简单的解决方案。

基本上使用stdClass()创建一个新类,它满足您对JSON数据作为对象的要求。 然后更改while循环以将结果行作为对象而不是assoc数组返回,然后可以将其放入新类的images数组属性中,每个返回一行。

现在,您拥有PHP类中的所有数据,只需使用json_encode()将其转换为JSON字符串即可。结果可以作为返回的数据回显。

我假设您用来封装数据库访问代码的类有一个方法,它将返回一个对象形式的行以及一个assoc数组。

// Query for a list of all existing files
$sql = 'SELECT `id`, `name`, `mime`, `size`, `created` FROM `file`';
$result = $dbLink->query($sql);

$toJson = new stdClass();

// Check if it was successfull
if($result) {
    // Make sure there are some files in there
    if($result->num_rows == 0) {
        echo '<p>There are no files in the database</p>';
        toJson->success = 0;
        toJson->message = 'There are no files in the database';

    } else {
        // Print the top of a table
        echo '<table width="100%">
              <tr>
                <td><b>Name</b></td>
                <td><b>Mime</b></td>
                <td><b>Size (bytes)</b></td>
                <td><b>Created</b></td>
                <td><b>&nbsp;</b></td>
              </tr>';

        // Print each file
        while($row = $result->fetch_object()) {
            echo "<tr>
                  <td>{$row->name}</td>
                  <td>{$row->mime}</td>
                  <td>{$row->size}</td>
                  <td>{$row->created}</td>
                  <td><a href='get_file.php?id={$row->id}'>Download</a></td>
                  </tr>";

            // amend and existing properties
            $row->name = 'http://' 
                         . $_SERVER['HTTP_HOST'] 
                         . '/imageUpload/' 
                         . $row->name;

            // or alternatively add a new property
            $row->url  = 'http://' 
                         . $_SERVER['HTTP_HOST'] 
                         . '/imageUpload/' 
                         . $row->name;

            $toJson->images[] = $row;
        }

        // Close table
        echo '</table>';
        $toJson->message = 'images Available';
        $toJson->imageCount = $result->num_rows;
    }

    // Free the result
    $result->free();
} else {
    toJson->success = 0;
    toJson->message ='Error! SQL query failed:';
    echo 'Error! SQL query failed:';
    echo "<pre>{$dbLink->error}</pre>";
}

如果您通过页面上的AJAX调用来调用它,那么只需返回数据

echo json_encode($toJson);
exit;

如果您使用生成的json字符串执行其他操作,则只需执行此操作

$json_string = json_encode($toJson);