0

I'm trying to display json in my website. the JSON should be formatted right, but it's wrapped.

Currently it's:

{"ids":[{"id":"52","name":"\u0633\u0633\u064a john","sex":" \u0635\u0628\u064a","nationality":"german"},{"id":"50","name":"\u0645\u062d\u0645\u062f sjajha ha","sex":"\u0630\u0643\u0631","nationality":"\u0628\u062d\u0631\u0627\u0646\u064a"}],"success":1}

while it should be like this:

{
    "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"
        }
    ]
}

this is my php code:

<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>
Cœur
  • 37,241
  • 25
  • 195
  • 267
John Jared
  • 790
  • 3
  • 16
  • 40

1 Answers1

0

In php 5.4.0+ you have JSON_PRETTY_PRINT options to print JSON with indent (easy to read formatted).

echo json_encode($json, JSON_PRETTY_PRINT);

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

But you have to print them in the textarea or pre tag. like this

echo '<pre>'.json_encode($json, JSON_PRETTY_PRINT).'</pre>';
//or
echo '<textarea cols="50" rows="20">'.json_encode($json, JSON_PRETTY_PRINT).'</textarea>';
Chokchai
  • 1,684
  • 12
  • 12
  • I used this but I get ** Warning: json_encode() expects exactly 1 parameter, 2 given in xxxx.php on line 61** – John Jared Oct 04 '13 at 05:55
  • Hey. I found this please take a look http://www.daveperrett.com/articles/2008/03/11/format-json-with-php/ – Chokchai Oct 04 '13 at 06:04