11

私はJSONを学ぼうとしています.二重引用符で囲まれたキーを持つJavaScriptオブジェクトはすべてJSONオブジェクトと見なされることを学びました.

そして、私はこのオブジェクトを構築しました

var jstr1 = {"mykey": "my value"};

しかし、JSON.parse(jstr1) を使用して解析しようとすると、次のエラーが発生しました。スクリーンショットを参照してください。

ここに画像の説明を入力

しかし、これを解析しようとすると

var jstr = '{"mykey": "my value"}';,

私は成功しました、スクリーンショットを見てください。私はこれと混同しました。なぜこれが起こるのか説明してください。2つのフォームの違いは何ですか。

そして、任意のサービスからの応答として JSON を取得したとき、それがどのように見えるか、または形式であるかどうjstrjstr1

助けてくれてありがとう。

4

5 に答える 5

30

Javascript を作成していObjectます。そこから JSON 文字列が必要な場合は、 を使用しますJSON.stringify

そう

var myObj = {mykey: "my value"}
   ,myObjJSON = JSON.stringify(myObj);

コメントに基づく: JSON Objectのようなものはありません。parsedJavascript オブジェクトに使用できる JSON 文字列があります。Javascript オブジェクトはstringifiedJSON 文字列にすることができます。JSON 文字列内では、キーと値が引用符で囲まれています。したがって、上記の結果はを含む文字列'{"mykey":"my value"}'です。

myObjJSONブラウザ コンソールで (: を使用して)解析を試みると、次のJSON.parse(myObjJSON)ようになりますObject {mykey: "my value"}

于 2013-09-05T11:34:23.153 に答える
6

このコード

var jstr1 = {"mykey": "my value"};

Object Literal Notationを使用して JavaScript オブジェクトを作成します。 Object Literal NotationJSON (JON はJavaScript object notation
の略) の 違いについては、こちらを参照してください: JSON と Object Literal Notation の違いは何ですか?

このデータを に渡すことは論理的に意味がありませんJSON.parse()

最初のバリアント ( var jstr = '{"mykey": "my value"}';) との違いは、「生の」文字列を作成することです。生の文字シーケンスを除いて、その文字列には何もアクセスできません。を使用JSON.parse()すると、文字列から作成された使用可能なフォーム (オブジェクト) が得られます。

SyntaxError: 予期しないトークン o

これは、次の自動文字列変換によるものですjstr1

jstr1.toString();
// gives us [object Object]
// ----------↑
于 2013-09-05T11:31:03.657 に答える
6

あなたにはいくつかの誤解がありますJSON.parse

JSON.parse takes string and parse it to JAVASCRIPT object
JSON.stringify takes an object and parse it to a string

それが、次を実行したときの理由です

JSON.parse('{"a":"b"}')

json文字列が必要なため、機能しました

しかし、あなたが走ったとき

JSON.parse({"a":"b"})

オブジェクトが文字列に変換されたため、そうではありませんでした

"[object Object]"

ここに、「[object Object]」が文字で有効な構文ではないというエラーがありますo

于 2013-09-05T11:37:41.347 に答える