2013-10-02 57 views
0

我正在尝试在我的网站上显示jsonJSON应该正确格式化,但它被包装。显示右格式化json

目前,它是:

{ “IDS”:[{ “ID”: “52”, “名”: “\ u0633 \ u0633 \ u064a约翰”, “性”:” \ u0635 \ u0628 \ u064a “ ”国籍“: ”德国“},{ ”ID“: ”50“, ”名“: ”\ u0645 \ u062d \ u0645 \ u062f sjajha 医管局“, ”性“:” \ u0630 \ u0643 \ u0631" , “国籍”: “\ u0628 \ u062d \ u0631 \ u0627 \ u0646 \ u064a”}], “成功”:1}

而它应该是这样的:

{ 
    "success": 1, 
    "product": [ 
     { 
      "pid": "1", 
      "name": "iPHone 4S", 
      "price": "300.00", 
      "description": "iPhone 4S white", 
      "created_at": "2012-04-29 01:41:42", 
      "updated_at": "0000-00-00 00:00:00" 
     } 
    ] 
} 

这是我的PHP代码:

<html> 
<head> 
<title>Send and Rec data to Android Device</title> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 

</head> 


<body> 

<?php 

/* 
* Following code will list all the ids 
*/ 
$db = mysql_connect($dbhost, $dbuser, $dbpass); 

    mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $db); 
    mysql_set_charset('utf8', $db); 

    $charset = mysql_client_encoding($db); 

// array for JSON response 
$response = array(); 

// include db connect class 
// connecting to db 

// get all ids from ids table 
$result = mysql_query("SELECT * FROM people") or die(mysql_error()); 

// check for empty result 
if (mysql_num_rows($result) > 0) { 
    // looping through all results 
    // ids node 
    $response["ids"] = array(); 

    while ($row = mysql_fetch_array($result)) { 
     // temp user array 
     $idd = array(); 
     $idd["id"] = $row["id"]; 
     $idd["name"] = $row["name"]; 
     $idd["sex"] = $row["sex"]; 
     $idd["nationality"] = $row["nationality"]; 

     // push single idd into final response array 
     array_push($response["ids"], $idd); 
    } 
    // success 
    $response["success"] = 1; 

    // echoing JSON response 
    echo json_encode($response); 
} else { 
    // no ids found 
    $response["success"] = 0; 
    $response["message"] = "No ids found"; 

    // echo no users JSON 
    echo json_encode($response); 
} 
?> 

</body> 


</html> 
+0

而不是'array_push($ response [“ids”],$ idd);'use' $ response ['product'] [] = $ idd;'(或者类似的,你的json和php代码是不一样的...) – Rufinus

+0

没有什么改变,仍然是相同的包装。 –

+0

为什么它被标记为android问题?你需要在android中吗?如果你这样做是jObject.ToString(number_of_space); –

回答

0

在PHP 5.4.0+你JSON_PRETTY_PRINT选项与压印打印JSON(易于读取的格式)。

echo json_encode($json, JSON_PRETTY_PRINT); 

编号:http://www.php.net/manual/en/function.json-encode.php#refsect1-function.json-encode-changelog

但是你要打印出来的文本区域或预标记。像这样

echo '<pre>'.json_encode($json, JSON_PRETTY_PRINT).'</pre>'; 
//or 
echo '<textarea cols="50" rows="20">'.json_encode($json, JSON_PRETTY_PRINT).'</textarea>'; 
+0

我用这个,但我得到**警告:json_encode()期望的是1个参数,2 xxxx.php给出线61 ** –

+0

您需要的PHP版本5.4.0以上使用此代码。 – Chokchai

+0

嘿。我发现这个请看看http://www.daveperrett.com/articles/2008/03/11/format-json-with-php/ – Chokchai