JavaScript (または jQuery) を使用して、オブジェクトを記述する文字列を JSON 文字列に変換するにはどうすればよいですか?
例: これを変換します (ない有効なJSON文字列):
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }"
次のようにします:
str = '{ "hello": "world", "places": ["Africa", "America", "Asia", "Australia"] }'
eval()
できれば使用を避けたいです。
ベストアンサー1
文字列が信頼できるソースからのものである場合eval
そのJSON.stringify
結果を使うこともできます。次のようになります:
var str = "{ hello: 'world', places: ['Africa', 'America', 'Asia', 'Australia'] }";
var json = JSON.stringify(eval("(" + str + ")"));
オブジェクトリテラルを使用する場合はeval
、括弧で囲む必要があることに注意してください。そうしないと、中括弧はオブジェクトではなくブロックとして解析されます。
また、質問のコメントにも同意します。オブジェクトを有効なJSONでエンコードするだけで、解析、エンコード、そしておそらく解析する必要がなくなるので、はるかに良いでしょう。またHTML は一重引用符で囲まれた属性をサポートしています (文字列内の一重引用符は必ず HTML エンコードしてください)。