JSONの一部を出力したいです。
var obj = { a : true, b : false, c : 0, d : 1, e : 2, f : 0.345, g : "あ", h : "い" }; var hoge = JSON.stringify(obj); alert(hoge[0]);
上記の場合
・変数「 obj 」に含まれる一番最初の「 { 」が出力されてしまう。
・記号「 ○ 」などは\u2525的な感じで変換されてしまう。
**
質問内容
例えば「 a 」の「 true 」だけを出力する場合、また記号が変換されないようにするためには、どのように出力したら良いでしょうか??**
下記URLにごアクセスいただき、コメントアウト外しで左上「RUN」をクリックすると実行できます。
JSFiddle
https://jsfiddle.net/fwjLfodh/5/
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答7件
0
・記号「 ○ 」などは\u2525的な感じで変換されてしまう。
\u2525
は文字化けではなく、Unicodeエスケープシーケンスです。
文字列リテラルに変換されれば、正しく「〇」が出力されるはずです(最も、Google Chrome 59.0.3071.115 ではエスケープ処理は発生しませんでしたが)。
初めにJSON文字列しかなくてオブジェクトが存在しない状況と仮定するなら、JSON.parse
を使えば解決できると思います。
JavaScript
1var obj = { 2 a : true, 3 b : false, 4 c : 0, 5 d : 1, 6 e : 2, 7 f : 0.345, 8 g : "あ", 9 h : "い", 10 i : '〇' 11}; 12 13var json = JSON.stringify(obj); 14console.log(json); // {"a":true,"b":false,"c":0,"d":1,"e":2,"f":0.345,"g":"あ","h":"い","i":"〇"} 15console.log(JSON.parse(json)); // {"a":true,"b":false,"c":0,"d":1,"e":2,"f":0.345,"g":"あ","h":"い","i":"〇"} 16 17obj = JSON.parse(json); 18console.log(obj); // {"a":true,"b":false,"c":0,"d":1,"e":2,"f":0.345,"g":"あ","h":"い","i":"〇"} 19console.log(obj.a); // true
Re: phiilo_ さん
投稿2017/06/27 01:14
総合スコア18164
0
ベストアンサー
JSON.stringifyは配列をJSON文字列化するコードなのでご提示のやり方だと文字列の最初(0番目)の「{」が出力されますし、全角文字列である「○」も変換されます。
配列として取り出したいのであればJSON文字列を配列に戻すJSON.parse()を利用します。
javascript
1var obj = { 2 a : true, 3 b : false, 4 c : 0, 5 d : 1, 6 e : 2, 7 f : 0.345, 8 g : "あ", 9 h : "い" 10}; 11 12var hoge = JSON.stringify(obj); 13var pHoge = JSON.parse(hoge); 14alert(pHoge["a"]); //true
投稿2017/06/27 01:10
総合スコア80850
0
aを取得するだけならば、
以下で出来ました。
javaScript
1var obj = { 2 a : true, 3 b : false, 4 c : 0, 5 d : 1, 6 e : 2, 7 f : 0.345, 8 g : "あ", 9 h : "い" 10}; 11 12alert(obj.a); //true が表示 13alert(obj.g); //あ が表示 14
投稿2017/06/27 01:10
総合スコア33
0
JSON.stringify(obj)としていることで、hogeは文字列になってしまっています。
alert(hoge) =>(文字列) {"a":true,"b":false,"c":0,"d":1,"e":2,"f":0.345,"g":"あ","h":"い"}
この文字列の一番先頭は"{"のため、hoge[0]は"{"と、なってしまいます。
実はこの場合stringifyを使う必要がなく、またhogeに代入する必要もなく、obj.a,obj.bと使用することで、お望みの挙動を実現できるはずです
投稿2017/06/27 01:10
総合スコア888
0
objectからn番目の値を取る場合valuesで参照してください
javascript
1var obj = { 2 a : true, 3 b : false, 4 c : 0, 5 d : 1, 6 e : 2, 7 f : 0.345, 8 g : "あ", 9 h : "い" 10}; 11console.log(Object.values(obj)[0]); 12
投稿2017/06/27 01:30
総合スコア114843
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/27 02:28
2017/06/27 02:42 編集
2017/06/27 03:04 編集
2017/06/27 03:05
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/27 01:45