0

$hometown2 つの異なる SQL クエリからの 2 つの変数を 1 つの JSON 配列 (つまりと)に入れたいと考えています$topcat。ハードコーディングしようとしていますが、どのように見えるかわかりません。

   print(json_encode('{"hometown":"' . $hometown .'", "category":"'. $topcat .'"}'));

私の出力はこれです:

{\"hometown\":\"Seattle, WA\", \"category\":\"Movies\"}"

スラッシュがどこから来ているのかわからない (ストリップスラッシュを実行できると思いますか?) '[' と ']' も追加する必要があるようですか? これに適したフォーマットは何ですか?

4

3 に答える 3

5

json_encode()は配列またはオブジェクトを受け取りますが、すでに JSON でエンコードされている文字列は受け入れません。次のように実行できます。

print json_encode(array('hometown' => $hometown, 'category' => $topcat));

出力

{"hometown":"Seattle, WA","category":"Movies"}
于 2013-02-04T17:39:48.083 に答える
4

その文字列は既に JSON のように見えます。なぜもう一度エンコードしようとしているのですか?

スラッシュがどこから来ているのかわからない

そのコードは、JSON でエスケープする必要がある二重引用符を含む文字列をエンコードするためです。

安全ではなく、ばかげていますが、簡単な解決策:

print('{"hometown":"' . $hometown .'", "category":"'. $topcat .'"}');

より良い解決策:

print(json_encode(array(
    'hometown' => $hometown,
    'category' => $topcat,
)));
于 2013-02-04T17:39:05.650 に答える
0

文字列は既に JSON オブジェクトとしてフォーマットされており、エンコーディングはスラッシュを追加するものです。この関数は、配列を文字列ではjson_encode()なく JSON オブジェクトに変換するように作成されています。print()print()echo()

これがあなたの解決策です:

echo '{"hometown":"'.$hometown.'", "category":"'.$topcat.'"}';
于 2013-02-04T17:44:32.020 に答える