データベースに配列があり、次のようになります。{"hello":"world", "Test":["hello"]}
これは に最適ですJSON.stringify
が、データベースから選択すると次のようになります。
$metadata = $this->repository->getMetadata($id);
$data = json_encode($metadata);
return $this->render('AcmeQuotesBundle:Home:metadata.html.twig', array('data' => $data));
これをテンプレートに入れます:
{% block body %}
<script>
var obj = {{ data|raw }}
document.body.innerHTML = "";
document.body.appendChild(document.createTextNode(JSON.stringify(obj, null, 4)));
</script>
{% endblock %}
私はこの出力を得る:
[
{
"quoteMetadata": "{\"hello\":\"world\", \"Test\":[\"hello\"]}"
}
]
これは私が望むものではありません。私が望むのは、 の値がobj
ネイティブ文字列であることだけです -{"hello":"world", "Test":["hello"]}
なし"quoteMetadata":
、引用符なし、"\"
単語の前後なし。を使用してみimplode()
ましたが、次のように通知されます。
Notice: Array to string conversion in C:\xampp\htdocs...
私はSymfony2、Twig、およびDoctrine2を使用しています。データベースからの文字列をここのように読みやすい方法で表示したいので、これをすべて行っています- http://jsfiddle.net/AndyE/HZPVL/これを修正する方法、または別の方法で作成する方法があれば、共有してください!
編集
var_dump($matadata)
の後に置くと$metadata = $this->repository->getMetadata($id);
、次のようになります。
array(1) { [0]=> array(1) { ["quoteMetadata"]=> string(35) "{"hello":"world", "Test":["hello"]}" } }