2015-04-06 76 views
1

我在PHP创建JSON从另一个应用程序读取,我要分类的JSON数据作为创建我的JSON右键对象

jobs: 
    job: 
    ID: 123 
    name: Job Name 1 
    job: 
    ID: 321 
    name: Job Name 2 
    job: 
    ID: 231 
    name: Job Name 3 

什么我得到的却是

0: 
    ID: 123 
    name: Job Name 1 
1: 
    ID: 321 
    name: Job Name 2 
2: 
    ID: 231 
    name: Job Name 3 

我使用创造了JSON的PHP代码如下:

$rs = mysqli_query($dbc, "SELECT id, name FROM job"); 
while($obj = mysqli_fetch_object($rs)) { 
    $arr[] = $obj; 
} 
echo json_encode($arr, JSON_FORCE_OBJECT); 

什么我需要做的,必须在JSON每个项目分类作为'工作',整个列表被归类为'工作'?

+0

你不能(对于你的问题的第一部分)。你如何区分不同的工作?如果必须,可以将整个数组放在另一个数组中,并带有'jobs'键。虽然没有太多附加值。 – jeroen

+0

如果我看Reddit的JSON [链接](http://www.reddit.com/.json),它被格式化为children = {然后在多个数据= {。这是我试图达到的格式。 – Charlbury

回答

0

试试这个

$rs = mysqli_query($dbc, "SELECT id, name FROM job"); 
while($obj = mysqli_fetch_object($rs)) { 
    $arr['job'][] = $obj; 
} 
echo json_encode($arr, JSON_FORCE_OBJECT); 
+0

这给了我错误:'致命错误:无法使用类型为stdClass的对象作为数组' – Charlbury

+0

无论如何,我认为你不能这样做是因为你的** KEY **不是唯一的。 – user789456

0

给一个尝试这样

while($obj = mysqli_fetch_object($rs)) { 
    $arr['jobs'][]['job'] = $obj; 
} 
echo json_encode($arr); 

更新:

$obj_user1 = new stdClass; 
$obj_user1->id = "1"; 
$obj_user1->name = "a"; 

$obj_user2 = new stdClass; 
$obj_user2->id = "2"; 
$obj_user2->name = "b"; 

$obj_user = array($obj_user1,$obj_user2); 

foreach($obj_user as $a){ 
    $arr['jobs'][]['job'] = $a; 
} 

print_r(json_encode($arr)); 

输出: {"jobs":[{"job":{"id":"1","name":"a"}},{"job":{"id":"2","name":"b"}}]}