オブジェクト文字列をJSONに変換する 質問する

オブジェクト文字列をJSONに変換する 質問する

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 エンコードしてください)。

おすすめ記事