質問編集履歴

4

誤記修正

2020/02/07 06:43

投稿

tsunacan292
tsunacan292

スコア5

test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- |ID|name|list|
19
+ |id|name|list|
20
20
 
21
21
  |:--|:--|--|
22
22
 
@@ -38,7 +38,7 @@
38
38
 
39
39
  HashMap<String, String> parameterMap = new HashMap<>();
40
40
 
41
-  try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
41
+  try (PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM table")) {
42
42
 
43
43
    try (ResultSet resultSet = preparedStatement.executeQuery()) {
44
44
 

3

データの取り出し方を追記

2020/02/07 06:43

投稿

tsunacan292
tsunacan292

スコア5

test CHANGED
File without changes
test CHANGED
@@ -12,6 +12,18 @@
12
12
 
13
13
 
14
14
 
15
+ ### データ
16
+
17
+
18
+
19
+ |ID|name|list|
20
+
21
+ |:--|:--|--|
22
+
23
+ |0|taro|AAA,BBB,CCC|
24
+
25
+ |1|hanako|DDD,EEE,FFF|
26
+
15
27
 
16
28
 
17
29
  ### 該当のソースコード
@@ -20,15 +32,35 @@
20
32
 
21
33
  ```java
22
34
 
23
- // DBから値を取得 この時点では"list"はカンマ区切りの文字列
35
+ // DBから上記の値を取得
24
36
 
25
- List<Map<String, Object>> List = [
37
+ public List<Map<String, Object>> getList() throws SQLException {
26
38
 
27
- {"id":0, "name": "taro", "list": "AAA,BBB,CCC"},
39
+ HashMap<String, String> parameterMap = new HashMap<>();
28
40
 
29
- {"id":1, "name": "hanako", "list": "DDD,EEE,FFF"}
41
+  try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
30
42
 
43
+   try (ResultSet resultSet = preparedStatement.executeQuery()) {
44
+
45
+    ArrayList<Map<String, Object>> list = new ArrayList<>();
46
+
47
+     while(resultSet.next()) {
48
+
49
+      list.add(setResultSetToMap(resultSet));
50
+
31
- ];
51
+     }
52
+
53
+     return list;
54
+
55
+   }
56
+
57
+  }
58
+
59
+ }
60
+
61
+ //Listを代入
62
+
63
+ List<Map<String, Object>> List = getList();
32
64
 
33
65
 
34
66
 

2

実現したいこと 修正

2020/02/07 06:39

投稿

tsunacan292
tsunacan292

スコア5

test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  配列をObject型に格納、その後の取り出し方がわかりません。
10
10
 
11
- ご教授お願いします。
11
+ 配列で取り出す方法がないか、ご教授お願いします。
12
12
 
13
13
 
14
14
 

1

事象の修正

2020/02/07 06:19

投稿

tsunacan292
tsunacan292

スコア5

test CHANGED
File without changes
test CHANGED
@@ -90,11 +90,7 @@
90
90
 
91
91
  // ↓↓ここが不明↓↓
92
92
 
93
- List<String> list = obj.get("list"); // 型の不一致で×
93
+ List<String> list = obj.get("list"); // ※1
94
-
95
- List<String> list = (List<String>) obj.get("list"); // Objectから List<Object> への未検査キャスト⇒△と言われる
96
-
97
- JSONArray list = obj.getJSONArray("list"); // これだとエラー
98
94
 
99
95
 
100
96
 
@@ -116,12 +112,46 @@
116
112
 
117
113
 
118
114
 
115
+ ※1の部分でobj.get("list")の型が知りたかったので、以下四つを試し、
116
+
117
+ - if (obj.get("list") instanceof Object)
118
+
119
+ - if (obj.get("list") instanceof String)
120
+
119
- obj.get("list")の型がわからないので、instanceofを試して「Object型」「List型」でtrueでしたがList<String>では受けられませんでした。
121
+ - if (obj.get("list") instanceof JSONObject)
122
+
123
+ - if (obj.get("list") instanceof List)
124
+
125
+
126
+
127
+ Object,Listの場合Trueが返されたので、List<String>型で受け取れるはず、と※1のように記載しましたが
128
+
129
+ 記述の時点で「型の不一致: Object から List<String> には変換できません」と警告がでてしまいました。
130
+
131
+
132
+
133
+
134
+
135
+ 型の不一致のため、キャストする方法に変更しましたが、以下の通り記載すると、
136
+
137
+ 「Objectから List<Object> への未検査キャスト」と警告表示されます。
138
+
139
+ - List<String> list = (List<String>) obj.get("list");
140
+
141
+
142
+
143
+
144
+
145
+ また、ほかの配列(JSONArray)で受けられるかと思い、以下のようにしましたが、
146
+
147
+ 実行時に型が違います、とエラー表示されます。
148
+
149
+ - JSONArray list = obj.getJSONArray("list");
150
+
151
+
152
+
153
+
120
154
 
121
155
 
122
156
 
123
157
  ### 補足情報(FW/ツールのバージョンなど)
124
-
125
-
126
-
127
- 特になし