3

クライアントに送信する Json 文字列を手動で作成しようとしています。

{'result':'hhh'} 

私が使うとき

echo json_encode(array('result'=>'hhh'));

完璧に届きます。しかし、私がするとき

echo "{'result':'hhh'}";

そうじゃない

2 つのリクエストの唯一の違いは、最初のリクエストには次のようなものがあることです。

Content-Length: 9    header

そして2番目のもの(これは機能しません)

Content-Length: 16   header

両方の文字列のコンテンツの長さは 16!!! である必要があります。ZF と Mootools の組み合わせに関係があると思います。

4

2 に答える 2

2

仕様によると、JSON ではキー名と文字列値を二重引用符で囲む必要があります。

echo json_encode(array('result'=>'hhh'));

出力します

{"result":"hhh"}

この出力の長さは、次のように 16 バイトです。

echo strlen(json_encode(array('result'=>'hhh')));

「16」を出力します。

仕様に従う JSON デコーダーは、手動でエコーされた JSON が提示されると、失敗するか、例外をスローします。

于 2009-03-26T04:06:35.403 に答える
1

UTF-8 が標準エンコーディングであるため、UTF-8 に問題はありません。json_encode() がそれをトランスコードしているのに対し、別のエンコーディングスキームで何かをエコーし​​ているように聞こえますが、これは壊れています。

于 2009-03-26T03:18:06.003 に答える