2016-05-22 1 views
0

私はオブジェクトの配列を持っており、JSONとしてクライアントのブラウザに戻したいと思います。次のようにJSONに配列を解析するZF2でJsonModelを使用してUniocde記号なしでJSONを返す方法は?

コードは次のようになります。この静的メソッドを使用して

public static function parse(array $data){ 

    $parsed = array(); 

    foreach ($data as $entity){ 
     $reflection = new \ReflectionClass($entity); 
     $arrayObject = array(); 

     foreach($reflection->getProperties() as $property){ 
      $property->setAccessible(true); 
      $arrayObject[$property->getName()] = $property->getValue($entity); 
      $property->setAccessible(false); 
     } 

     array_push($parsed, $arrayObject); 
    } 

    $parsed = json_encode($parsed); 


    return $parsed; 
} 

I'am、単純な配列にオブジェクトをキャストするためproportiesがパブリックでない場合、私にはnullバイトのキーを提供します。これまではすべてが問題なく、JsonModelで解析された配列を返そうとしています。

return new JsonModel(
    array(
     'data' => ObjectToJsonParser::parse($match) 
    )); 

Firebugでは、正しいJSON応答を受信しますが、コンテンツにはUnicode記号が含まれています。

enter image description hereこれらのUnicode記号がないとJSONを正しく返すにはどうすればよいですか?

答えて

0

ユニコード文字をエンコードする場合は、parse関数でjson_encodeを呼び出すときは、JSON_UNESCAPED_UNICODEオプションを使用する必要があります。私はそれを言及したいと思います

return $this->getResponse()->setContent(ObjectToJsonParser::parse($match)); 
+0

、私の解析機能が正しくデータを返します(テストwithuout:

$parsed = json_encode($parsed, JSON_UNESCAPED_UNICODE); 

そして、あなたはJsonModelを使用せずに応答を返すために、これを使用することもできます。ただ、このような

czeski

+0

'$ this-> getResponse() - > setContent()'を使ってJsonを返そうとしています。Seeを参照してください。See see JsonModel。私の編集 – blackbishop

+0

I diあなたが言っているように、さらにcontent-typeをapplication/jsonに設定するといいです。それは問題ありません。しかし、私は、何らかの理由で返されたJsonModelが適切に動作するように設定することが可能であることを知りたいですか? – czeski

関連する問題