私はひもを持っています
str = "{'a':1}";
JSON.parse(str);
VM514:1 Uncaught SyntaxError: Unexpected token '(…)
上記の文字列(str)をJSONオブジェクトに解析するにはどうすればよいですか?
これは単純な構文解析のようです。しかし、それは機能していません。
私はひもを持っています
str = "{'a':1}";
JSON.parse(str);
VM514:1 Uncaught SyntaxError: Unexpected token '(…)
上記の文字列(str)をJSONオブジェクトに解析するにはどうすればよいですか?
これは単純な構文解析のようです。しかし、それは機能していません。
var str = "bad example";
これは良い習慣ではありません。次のvar str = 'good example';
ことをお勧めします。=>このようにすると、JSONで問題が発生することはなく、HTMLでも問題が発生することはありません。:)
回答:
JSON標準二重引用符を必要とし、単一引用符を受け入れ、またパーサは行いません。
文字列にエスケープされた一重引用符がない単純なケースがある場合(通常は不可能ですが、これはJSONではありません)、単純にすることができ、str.replace(/'/g, '"')
最終的に有効なJSONになるはずです。
'title': "Mama's Friend"
になり "title": "Mama"s Friend"
ますが、もちろん無効です!私はあなたの返事に反対票を投じるべきですが、私は反対票を投じることに反対です。このコメントはもっと価値があります。
古い投稿だと思いますが、この目的でJSON5を使用できます。
<script src="json5.js"></script>
<script>JSON.stringify(JSON5.parse('{a:1}'))</script>
{'section': "24'"}
これは: {"section": "24""}
になり、解析されません。
<script>JSON.stringify(some_jsonString)</script>
JSONが(ユーザー入力ではなく)安全に制御できると確信している場合は、JSONを簡単に評価できます。Evalは、引用符で囲まれていないプロパティ名だけでなく、すべての引用符タイプを受け入れます。
var str = "{'a':1}";
var myObject = (0, eval)('(' + str + ')');
evalパーサーの動作方法により、追加の括弧が必要です。Evalは、管理しているデータで使用する場合は悪ではありません。)(JSON.parseとevalの違いの詳細についてを参照)(JSON.parse対のeval
var str = "{'a':1}";
str = str.replace(/'/g, '"')
obj = JSON.parse(str);
console.log(obj);
これは私にとって問題を解決しました。
{'a':"A'A"}
なります{"a":"A"A"}
json = ( new Function("return " + jsonString) )();
Function
evalの代わりに使用する原則は健全ですが、それ以外はすべて間違っています。あるべきですvar json = Function("'use strict';return " + jsonString)()