2

PHPではjson_encode、オブジェクトをjson文字列としてエンコードするために使用できます。

$string = json_encode($some_object);

ただし、PHPには、オブジェクトとは見なされない標準のデータ型(int、stringsなど)が多数あります。に文字列を渡すと、文字列json_encodeの定義に使用できるjavascriptステートメントを含む文字列が返されます。

あまり厄介な言い回しでは、これは

echo json_encode("Hello 
world, please don't " . '"' . "misuse quote's for emphasis " .  "or possessive apostrophes' ");

これを出力します(javascript対応の文字列)

"Hello \n\tworld, please don't \"misuse quote'sor possessive apostrophes' "

この動作はJSON仕様の一部ですか?つまり、JSONは、実装がネイティブの非オブジェクトデータ型の変換を処理する方法を定義または推奨していますか?それとも、回心について意見がありますか?私がRFCを読んだことで、これはあいまいなままになりましたが、私はこれらのことを解釈するのが苦手です。

この動作が関数の将来のバージョンから消える可能性に興味があるので、私は尋ねます。つまり、仕様のどこかで成文化されている場合、開発中に誰かが追加しようと考えていたものよりも、消える可能性は低くなります。

4

2 に答える 2

3

JSONはネイティブタイプをまったく気にしません。プログラミング言語が使用/理解できるタイプとの間でJSONがどのように変換されるかについては、JSONライブラリまたは機能の開発者次第です。

于 2011-01-22T23:31:24.523 に答える
1

あなたは正しいアランです、RFCはこの問題について十分に明確ではありません。

一方では、提供するRFCへのリンクで、導入部の2番目の段落に次のように記載されています。

JSONは、4つのプリミティブ型(文字列、数値、ブール値、およびnull)と2つの構造化型(オブジェクトと配列)を表すことができます。

しかし一方で、実際のJSON文法について説明している段落に進むと、次のようになります。

JSONテキストは、シリアル化されたオブジェクトまたは配列です。
JSON-テキスト=オブジェクト/配列

したがって、文法に基づいて、それ'a string'は有効なJSONテキストとして適格ではないと言うことができます。

個人的には、文法が「修正された」と言っ JSON-text = value て、いずれかをfalse / null / true / object / array / number / string有効なJSONテキストにすることを望んでいます。

今のところ厳密にしたい場合は、文法のセマンティクスを使用します。

Douglas Crockfordにこの質問へのリンクを送信します。おそらく、彼はいくつかの有用な情報を追加できます。

于 2011-01-23T07:46:07.840 に答える