JSON格式问题与响应

时间:2013-12-06 02:35:37

标签: javascript php json twitter-bootstrap

我正在尝试使用bootstrap typeahead插件,但我需要让我的JSON正确输出。

根据此页面上的最后一个示例,您可以在JSON响应中使用的不仅仅是key->valuehttp://twitter.github.io/typeahead.js/examples/

以下是我的PHP代码:

$objDB = new DB;
    $xml = $objDB->setStoredProc('shadowGetEmp')
                -> setParam("ntid", $query)
                -> execStoredProc()
                -> parseXML();


        foreach($xml->emp as $emp){

            $name = $emp->FirstName .' '. $emp->LastName;
            $qid = $emp->QID;
            $empID = $emp->EmpID;

            $users[] = array('name'=> $name, 'qid'=> $qid, 'empID'=> $empID);
        }

     header('Content-Type: application/json');
     echo json_encode($users);

JSON响应如下所示:

[{
    "name": "John Doe",
    "qid": {
        "0": "Q1234"
    },
    "empID": {
        "0": "123"
    }
}, {
    "name": "Bob Jones",
    "qid": {
        "0": "Q5678"
    },
    "empID": {
        "0": "456"
    }
}, {
    "name": "Mike James",
    "qid": {
        "0": "Q2233"
    },
    "empID": {
        "0": "789"
    }
}, {
    "name": "Harry Potter",
    "qid": {
        "0": "Q2212"
    },
    "empID": {
        "0": "223"
    }
}]

如何将响应格式化为正确的JSON输出?

我认为它是因为关联数组,但不确定如何包含的不仅仅是键/值和格式化JSON。

1 个答案:

答案 0 :(得分:0)

看起来$emp->QID$emp->EmpID返回一个包含一个元素的数组。

修复在$emp实例中分配这些变量的代码(更好,看起来应该只是数字/ id值,而不是数组)或在这里补偿它(脏解决方案,但会起作用)