PHP以某种格式生成JSON

时间:2015-10-13 10:59:55

标签: php arrays json

所以我想以这种格式为角应用生成我的JSON。结果将用于下拉列表,我需要它采用这种特殊格式

[
{
  id:1,
  post_title:title1},
{
  id:2,
  post_title:title1},
{
  id:3,
  post_title:title3},
and so on ...
]

但是当我将我的JSON发送回我的角度应用程序时,它看起来像这样

{
"0": {
    "id": "1",
    "post_title": "Batman Ipsum"
},
"1": {
    "id": "2",
    "post_title": "Title fit for a (precariously enthroned) king"
},
"2": {
    "id": "3",
    "post_title": "Cupcake Ipsum"
},
"3": {
    "id": "4",
    "post_title": "The most presidential lorem ipsum in history."
},
"4": {
    "id": "5",
    "post_title": "Quote Ipsum"
},
"5": {
    "id": "6",
    "post_title": "Yet another Batman Ipsum"
},
"6": {
    "id": "9",
    "post_title": "Yet another Harry Potter ipsum"
},
"7": {
    "id": "10",
    "post_title": "Vegetable Ipsum"
}
}

如何将其更改为我想要的格式?

我的php代码

function fetchPagesNames()
{
$response = array();
$resultArray=array();
try {
    $sql = "SELECT id,post_title FROM posts";
    $result = mysql_query($sql) or trigger_error(mysql_error() . $sql);
    $resultCount = mysql_num_rows($result);
    if ($resultCount > 0) {
        while ($row = mysql_fetch_assoc($result)) {
            $resultArray[]=$row;
        }
        $response['status'] = 'Success';
        $response['message'] = "Post's Obtained";
        $response['results'] = $resultArray;
    } else {
        $response['status'] = 'Error';
        $response['message'] = 'No Pages in the Database';
        die();
    }
    echo json_encode($response,JSON_FORCE_OBJECT);
} catch (exception $e) {
    $response['status'] = 'Error';
    $response['message'] = $e->getMessage();
    echo json_encode($response);
    die();
}
}

需要进行哪些更改?

3 个答案:

答案 0 :(得分:0)

JSON_FORCE_OBJECT删除json_encode()

答案 1 :(得分:0)

json_encode用于打印对象。

或者看起来像这样......

try {
    $sql = "SELECT * FROM tekst";
    $result = $dao->conn->query($sql);
    //$resultCount = mysql_num_rows($result);
    if ($result->num_rows > 0) {
        while ($row = $result->fetch_assoc()) {
            $resultArray[] = $row;
        }
        echo json_encode(
                $resultArray
                    );
    } else {
        $response['status'] = 'Error';
        $response['message'] = 'No Pages in the Database';
        die();
    }
} catch (exception $e) {
    $response['status'] = 'Error';
    $response['message'] = $e->getMessage();
    echo json_encode($response);
    die();
}

答案 2 :(得分:0)

您的“必需”格式与您获得的输出之间存在两个主要差异:

  1. 您引用的格式实际上并不是有效的JSON,因为您错过了引号。
    JSON格式非常明确,因为它必须包含属性名称和字符串值的引号。在这方面,您输出的JSON是正确的。

  2. 您所需的输出有一个外层是一个数组,而您的实际输出有一个对象,编号元素为字符串。
    这是因为您在JSON_FORCE_OBJECT的通话中使用了json_encode()。此参数强制将JSON输出的所有部分作为对象而不是数组进行处理。删除它,你将得到你正在寻找的顶级数组。