如何更改JSON输出格式以及如何支持中文字符?

时间:2010-04-20 05:17:28

标签: php javascript mysql html json

目前我使用以下代码从MySQL获取我的JSON输出。

<?php


$session = mysql_connect('localhost','name','pass'); 

mysql_select_db('dbname', $session); 


    $result= mysql_query('SELECT message FROM posts', $session); 
 $somethings = array();  
 while ($row = mysql_fetch_assoc($result)) {  
    $somethings[] = $row; 
 } 

?> 

<script type="text/javascript"> 
    var somethings= <?php echo json_encode($somethings); ?>; 
</script> 

输出是:

<script type="text/javascript"> 
    var somethings= [{"message":"Welcome to Yo~ :)"},{"message":"Try iPhone post!"},{"message":"????" (the ???? meant to be chinese character)}]; 
</script>

以下是问题,如何将输出更改为以下格式:

<script type="text/javascript"> 
userAge = new Array('21','36','20'),
userMid = new Array('liuple','anhu','jacksen');
</script>

我将在稍后使用以下代码:

 var html = '
<table class="map-overlay">
  <tr>
    <td class="user">' +
      '<a class="username" href="/' + **userMid[index]** + '" target="_blank"><img alt="" src="' +
        getAvatar(signImgList[index], '72x72') +
        '"></a><br>
      <a class="username" href="/' + **userMid[index]** + '" target="_blank">' +
      userNameList[index] +
      '</a><br>
      <span class="info">' + **userSex[index]** + ' ' + **userAge[index]** + '岁<br>
      ' +
      cityList[index] +
      '</span>' +
      '</td>
    <td class="content">' + picString
      + somethings[index] + '<br>
      <span class="time">' +
      timeList[index] + picTips +
      '</span></td>
  </tr>
</table>
'; 

我的json输出如何支持中文字符?

感谢您的帮助和阅读!

2 个答案:

答案 0 :(得分:0)

最好猜测你的问题:

如何更改此JSON格式:

[{ key : "Value", key2 : "Value2" }, { key : "Another Value", key2 : "Another Value2" }]

采用以下格式:

var Keys = ["Value", "Another Value"];
var Key2s = ["Value2", "Another Value2"];

答案是:你不应该。 JSON是一种很好的数据格式,它是独立的。如果您将JSON对象的键通常更改为变量,那么您的“数据格式”将极大地依赖于它将被使用的位置。变量名称冲突几乎得到保证。这也没有优势,JSON对象中的数据已经很容易访问。

<强>更新 您可以通过循环结果,将它们放入数组并打印出Javascript代码来轻松构建此格式,这并不困难。尽管如此我不打算在这里发布代码,因为这是一种可怕的做法。相反,您只需稍微更改将使用此数据的代码:

// old
var html = '...' + key[index] + '...' +key2[index] + '...';

// new
var html = '...' + data[index].key + '...' + data[index].key2 + '...';

至于汉字,Javascript / JSON本质上是UTF8,因此它对汉字没有任何问题。当您将它们打包为JSON时,只需确保您的字符是UTF8编码。

答案 1 :(得分:0)

我不禁建议您使用更优雅的解决方案?你有没有想过使用ajax?