JSON:字符集和获取键/值


JSON: Charset and getting key/value

所以我有一个php脚本可以做到这一点:

$rows = array();        
while($r = mysql_fetch_assoc($sth2)) {
 $rows[] = array($r['alternative'] => $r['amount']);
}
print json_encode($rows);

我得到这个输出:

[{"'u00e5l":"3"},{"vin":"3"},{"whiskey":"1"},{"gin":"1"},{"rom":"1"},{"vodka":"1"}]

问题一:''u00e5应该是ø。除了这个功能之外,其他所有功能都可以使用utf8,你知道如何解决这个问题吗?

第二个问题是,我似乎无法找到一种用javascript读取数据的好方法。我目前正在使用这个代码(我知道不是很好,但现在应该可以使用):

$.each(obj, function(key, val) 
{
counter = counter +1 ;
switch (counter)
    {
        case 0:
            numberOne = key;
            valueOne = val;
            break;
        case 1:
            numberTwo = key;
            valueTwo = val;
            break;
        case 2:
            numberThree = key;
            valueThree = val;
            break;
        case 3:
            numberFour = key;
            valueFour = val;
            break;
        case 4:
            numberFive = key;
            valueFive = val;
            break;
        case 5:
            numberSix = key;
            valuesix = val;
            break;
    }
});

您可以将JSON_UNESCAPED_UNCODE选项传递给JSON_encode。

你用来读取数据的代码确实看起来不太理想,但很难评论如何改进它,因为我不知道你实际上在用数据做什么。

对于第二个问题,您可以使用

for(a in obj)
{
  alert(a +' = '+obj[a]);
}

你还没有指定你想通过读取对象属性来实现什么,所以我把它留给你:)希望它能有所帮助。

编辑:

for(a in obj)
    {
      alert(a +' = '+obj[a]);
      for(b in obj[a])
      {
        alert(b+' = '+obj[a][b]); // or   alert(b+'  '+obj[a].b); would work  
      }
    }

您不能用JSON传递null值。用空字符串替换它们。我建议在查询级别进行此操作

case columnname when is null then '' end as newcolumnname