以下のようなデータが外部からJavaScriptプログラムに渡されたとします。
const a = [{"name":"Tom","age":"15"},{"name":"Anna","age":"14"}];
全体がシングルクオーテーション''で囲まれておらず、JSON形式のなりそこないになっています。これをどうにかしてJavaScriptのオブジェクトにしたいと思っています。parseを使ってオブジェクトにするには、parseする前に全体をシングルクオーテーション''で囲う必要がありますが、うまくいきません。
console.log(JSON.parse(`'${a}'`));
とすると
VM553:1 Uncaught SyntaxError: Unexpected token ' in JSON at position 0 at JSON.parse (<anonymous>) at <anonymous>:1:18 (anonymous) @ VM552:1
となり
const b = "'" + a +"'"; console.log(b)
とすると
'[object Object],[object Object]'
と、中身が変わってしまいます。
これをparseしようとすると、
console.log(JSON.parse(b));
VM723:1 Uncaught SyntaxError: Unexpected token ' in JSON at position 0 at JSON.parse (<anonymous>) at <anonymous>:1:18 (anonymous) @ VM722:1
となります。
どうすればいいでしょうか?ご回答よろしくお願いします。
##追記
質問の意図が上手く伝わらなかったようなので、追記いたします、
冒頭の代入式の右辺の配列データは、今持っているJSONファイルの中にそのままそっくり書かれたテキストになります。私がやりたいことは以下の通りです:
- そのJSONファイルをChrome DevTools(開発者ツール)上のconsole画面で、HTMLを使わずに、ソースコード上に書かれたある関数
func
に引数として渡して取り込み、これをfunc
の内部で処理してJavaScriptのオブジェクトにしたい。
少し変わったことかもしれませんが、HTMLなしでDevToolsのconsole画面でJSONファイルを渡すには、ファイルの中身の文字列をそのままコピペするしかない、という感じです。
//Chrome開発者ツールのconsole画面 const func(data){ //処理 } func(/*ここにJSONファイルの中身をコピペして実行*/);
回答者様のご回答によると、「すでにパース済みのオブジェクトになっている」ということですが、ということはこれをそのままオブジェクトとして扱うことができるということでしょうか?
実は冒頭のデータはもともと
[{name:"Tom",age:"15"},{name:"Anna",age:"14"}];
となっていたオブジェクトをJSON.stringify
でJSON化したものです。
オブジェクトのキーにあたる部分が元々はダブルクオーテーションで囲まれておらず、JSONファイルのような形式のままに見えたので、このまま使ってよいものか少し心配でした。
回答3件
あなたの回答
tips
プレビュー