响应出现JSON格式问题


JSON Format Issue with response

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

根据本页上的最后一个示例,您可以在JSON响应中使用不止一个key->value:http://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。

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

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