質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

688閲覧

フロントjavascriptでAPIからのresponseのJSONをうまく取得したい

pnskh112

総合スコア1

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

1グッド

0クリップ

投稿2021/08/06 09:01

編集2021/08/07 07:31

前提・実現したいこと

csvを取り込んで一括登録できる管理画面を作ろうとしています。
そこで、apiから返されるjsonの内容をvue.jsでalert表示しようとしています。

例ですが、このような形でjson形式のresponseがかえってきます

json

1 2 "users": { 3 "inserted": 2, 4 "updated": 3, 5 "errors": [] 6 }, 7 "userGrooups": { 8 "inserted": 0, 9 "updated": 0, 10 "errors": [ 11 { 12 "line": 2, 13 "column": "prefix", 14 "message": "グループ名は半角英数字(a-z, A-Z, 0-9)またはハイフン(-)・アンダースコア(_)で入力してください" 15 }, 16 { 17 "line": 2, 18 "column": "description", 19 "message": "説明は必須入力です" 20 } 21 ] 22 } 23

users、userGroups、といった具合であと10項目ほど一度にresponseきます

※実際に使っているapiのレスポンスとは中身変えてます

発生している問題・エラーメッセージ

response取得する際に、
jsonの中身で
users.inserted > 0 なら 登録件数を表示、
xxx.errors.length > 0 なら行数とエラーメッセージを表示

と言った具合で書こうとしたのですが、alert表示自体はできますがif文まみれになりソースがあまりきれいにならないです。
実現はできてますがもっと、スッキリ書く方法をアドバイスいただけませんでしょうか

javascript

1 2 /*実際に書いてみたソースコード*/ 3 4 if (res.data.users.inserted > 0){ 5 message += `ユーザー登録件数は ${res.data.users.inserted}` + `\n`; 6 } 7 if (res.data.users.updated > 0){ 8 message += `ユーザー更新件数は ${res.data.users.updated}` + `\n`; 9 } 10 11 if (res.data.userGroups.inserted > 0){ 12 message += `ユーザーグループ登録件数は ${res.data.userGroups.inserted}` + `\n`; 13 } 14 if (res.data.userGroups.updated > 0){ 15 message += `ユーザーグループ更新件数は ${res.data.userGroups.updated}` + `\n`; 16 } 17 18 /*.etc... */ 19 20 if (res.data.users.errors.length > 0){ 21 message += `インポート失敗:ユーザー` + `\n` 22 for (const error of res.data.users.errors){ 23 message += error.line + `行目:` + error.message + `\n`; 24 } 25 } 26 27 if (res.data.userGroups.errors.length > 0){ 28 message += `インポート失敗:ユーザーグループ` + `\n` 29 for (const error of res.data.userGroups.errors){ 30 message += error.line + `行目:` + error.message + `\n`; 31 } 32 } 33 34 /*.etc... */ 35

どうぞよろしくお願いします。

Waki285👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

出力フォーマットが基本的に一緒であれば以下のような感じ

//sample.json

json

1{ "users": { 2 "inserted": 2, 3 "updated": 3, 4 "errors": [] 5 }, 6 "userGroups": { 7 "inserted": 0, 8 "updated": 0, 9 "errors": [ 10 { 11 "lineNumber": 2, 12 "column": "prefix", 13 "message": "グループ名は半角英数字(a-z, A-Z, 0-9)またはハイフン(-)・アンダースコア(_)で入力してください" 14 }, 15 { 16 "lineNumber": 2, 17 "column": "description", 18 "message": "説明は必須入力です" 19 } 20 ] 21 } 22}

※ロジックがあっているかどうかはわかりません

javascript

1'use strict'; 2fetch('sample.json').then(res=>res.json()).then(data=>{ 3 let message=""; 4 let tmp=""; 5 const getMessage=(...arg)=>(tmp=arg[0])?`${arg[1]}${arg[2]}件数は ${tmp} 件\n`:""; 6 const getError=(...arg)=>arg[0].length?`インポート失敗:${arg[1]}\n`+arg[0].map(x=>`${x.lineNumber}行目:${x.message}`).join('\n'):""; 7 message+=getMessage(data.users.inserted,'ユーザー','登録'); 8 message+=getMessage(data.users.updated,'ユーザー','更新'); 9 message+=getMessage(data.userGroups.inserted,'ユーザーグループ','登録'); 10 message+=getMessage(data.userGroups.updated ,'ユーザーグループ','更新'); 11 message+=getError(data.users.errors,'ユーザー'); 12 message+=getError(data.userGroups.errors,'ユーザーグループ'); 13 console.log(message); 14});

投稿2021/08/06 09:30

編集2021/08/06 10:01
yambejp

総合スコア116724

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pnskh112

2021/08/07 05:43 編集

実際に試してみて、うまくいく上にとてもスッキリしたソースになりました。ありがとうございました。 ベストアンサーにさせていただきました。 lengthはlength > 0 とせずにそのままlengthだけで三項演算子使えるのですね、 精進します おかげさまで大変助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問