[英]how to get valid json reply in IOS application after making a webservice
[英]How can I send valid JSON back to iOS application?
我有个问题。 我现在正尝试数周,以从数据库中获取数据,将其编码为JSON,然后将其发送回我的iOS应用程序。 问题是,每次JSON无效时,都会显示http://jsonviewer.stack.hu/,这是我现在拥有的代码:
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
//echo "Connected to MySQL<br>";
//select a database to work with
$selected = mysql_select_db("test",$dbhandle)
or die("Could not select examples");
$result = mysql_query("SELECT * FROM test.debiteur WHERE SORT_NAAM LIKE '%eri%'");
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$deb_nr['deb_nr'] = $row['DEB_NR'];
$deb_naam['name'] = $row['DEB_NAAM'];
$deb_adres['adrs'] = $row['DEB_ADRES'];
$testje = array_merge($deb_nr, $deb_naam, $deb_adres);
$testjevervolg = array('klanten' => array($testje));
sendResponse(200, json_encode($testjevervolg));
}
}
这是返回的内容:
{
"klanten": [
{
"deb_nr": "10010",
"name": "ERIKA Handelsonderneming",
"adrs": "Aan de Heibloem 17"
}
]
}{
"klanten": [
{
"deb_nr": "25071",
"name": "Afdeling Heffing & Invordering",
"adrs": "Postbus 1275"
}
]
}{
"klanten": [
{
"deb_nr": "25247",
"name": "v.d. Heerik b.v.",
"adrs": "Flemingstraat 3-5"
}
]
}{
"klanten": [
{
"deb_nr": "25454",
"name": "Toering Automatisering",
"adrs": "Appelhof 17a"
}
]
}{
"klanten": [
{
"deb_nr": "25601",
"name": "Ratering Bouw & Industrie",
"adrs": "de Hogenkamp 1"
}
]
}
那就是我得到的。 问题是,应该有一个“ klanten”数组,每个deb_nr,name和adrs都应该是。 现在,每件事都有自己的“ Klanten”,如何解决呢?
谢谢。
我使用此函数将JSON返回到我的应用程序:
function sql2json($query) {
$data_sql = mysql_query($query) or die("'';//" . mysql_error());
$json_str = "";
if($total = mysql_num_rows($data_sql)) {
$json_str .= "[\n";
$row_count = 0;
while($data = mysql_fetch_assoc($data_sql)) {
if(count($data) > 1) $json_str .= "{\n";
$count = 0;
foreach($data as $key => $value) {
if(count($data) > 1) $json_str .= "\"$key\":\"$value\"";
else $json_str .= "\"$value\"";
$count++;
if($count < count($data)) $json_str .= ",\n";
}
$row_count++;
if(count($data) > 1) $json_str .= "}\n";
if($row_count < $total) $json_str .= ",\n";
}
$json_str .= "]\n";
}
mysql_free_result($data_sql);
return $json_str;
}
创建了这个但尚未测试,目前仅使用textwrangler也许可以帮助您前进。
你可以尝试这样的事情:
$completeJson = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$deb_nr['deb_nr'] = $row['DEB_NR'];
$deb_nr['name'] = $row['DEB_NAAM'];
$deb_nr['adrs'] = $row['DEB_ADRES'];
array_push($completeJson,$deb_nr);
}
$testjevervolg = array('klanten' => $completeJson);
sendResponse(200, json_encode($testjevervolg));
为了获得以下结果类型:
[
{
"deb_nr": "25071",
"name": "Afdeling Heffing & Invordering",
"adrs": "Postbus 1275"
},
{
"deb_nr": "25071",
"name": "Afdeling Heffing & Invordering",
"adrs": "Postbus 1275"
},
...
]
=============================================
$result = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$result[] = array(
"deb_nr" => $row['DEB_NR'],
"name" => $row['DEB_NAAM'],
"adrs" => $row['DEB_ADRES'],
);
}
header('Content-type: application/json');
echo json_encode($result);
为了获得以下结果类型:
[
{
"klanten" : {
"deb_nr": "25071",
"name": "Afdeling Heffing & Invordering",
"adrs": "Postbus 1275"
},
}
{
"klanten" : {
"deb_nr": "25071",
"name": "Afdeling Heffing & Invordering",
"adrs": "Postbus 1275"
},
},
...
]
=============================================
$result = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$result[]["klanten"] = array(
"deb_nr" => $row['DEB_NR'],
"name" => $row['DEB_NAAM'],
"adrs" => $row['DEB_ADRES'],
);
}
header('Content-type: application/json');
echo json_encode($result);
我不能假设您想要其他类型的响应,因此,如果您需要其他类型的输出,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.