質問するログイン新規登録

質問編集履歴

4

誤記修正

2020/02/07 06:43

投稿

tsunacan292
tsunacan292

スコア5

title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  ### データ
9
9
 
10
- |ID|name|list|
10
+ |id|name|list|
11
11
  |:--|:--|--|
12
12
  |0|taro|AAA,BBB,CCC|
13
13
  |1|hanako|DDD,EEE,FFF|
@@ -18,7 +18,7 @@
18
18
  // DBから上記の値を取得
19
19
  public List<Map<String, Object>> getList() throws SQLException {
20
20
  HashMap<String, String> parameterMap = new HashMap<>();
21
-  try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
21
+  try (PreparedStatement preparedStatement = connection.prepareStatement("SELECT * FROM table")) {
22
22
    try (ResultSet resultSet = preparedStatement.executeQuery()) {
23
23
     ArrayList<Map<String, Object>> list = new ArrayList<>();
24
24
      while(resultSet.next()) {

3

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

2020/02/07 06:43

投稿

tsunacan292
tsunacan292

スコア5

title CHANGED
File without changes
body CHANGED
@@ -5,15 +5,31 @@
5
5
  配列をObject型に格納、その後の取り出し方がわかりません。
6
6
  配列で取り出す方法がないか、ご教授お願いします。
7
7
 
8
+ ### データ
8
9
 
10
+ |ID|name|list|
11
+ |:--|:--|--|
12
+ |0|taro|AAA,BBB,CCC|
13
+ |1|hanako|DDD,EEE,FFF|
14
+
9
15
  ### 該当のソースコード
10
16
 
11
17
  ```java
12
- // DBから値を取得 この時点では"list"はカンマ区切りの文字列
18
+ // DBから上記の値を取得
19
+ public List<Map<String, Object>> getList() throws SQLException {
20
+ HashMap<String, String> parameterMap = new HashMap<>();
21
+  try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {
22
+   try (ResultSet resultSet = preparedStatement.executeQuery()) {
23
+    ArrayList<Map<String, Object>> list = new ArrayList<>();
24
+     while(resultSet.next()) {
25
+      list.add(setResultSetToMap(resultSet));
26
+     }
27
+     return list;
28
+   }
29
+  }
30
+ }
31
+ //Listを代入
13
- List<Map<String, Object>> List = [
32
+ List<Map<String, Object>> List = getList();
14
- {"id":0, "name": "taro", "list": "AAA,BBB,CCC"},
15
- {"id":1, "name": "hanako", "list": "DDD,EEE,FFF"}
16
- ];
17
33
 
18
34
  // 他のデータと整合するために、map化
19
35
  Map<String, JSONObject> ObjectMap= new HashMap<>();

2

実現したいこと 修正

2020/02/07 06:39

投稿

tsunacan292
tsunacan292

スコア5

title CHANGED
File without changes
body CHANGED
@@ -3,7 +3,7 @@
3
3
  Java初心者です。
4
4
  カンマ区切りの文字列として受け取ったデータを配列に変換後、
5
5
  配列をObject型に格納、その後の取り出し方がわかりません。
6
- ご教授お願いします。
6
+ 配列で取り出す方法がないか、ご教授お願いします。
7
7
 
8
8
 
9
9
  ### 該当のソースコード

1

事象の修正

2020/02/07 06:19

投稿

tsunacan292
tsunacan292

スコア5

title CHANGED
File without changes
body CHANGED
@@ -44,9 +44,7 @@
44
44
 
45
45
  // listを配列で受け取りたい
46
46
  // ↓↓ここが不明↓↓
47
- List<String> list = obj.get("list"); // 型の不一致で×
47
+ List<String> list = obj.get("list"); // ※1
48
- List<String> list = (List<String>) obj.get("list"); // Objectから List<Object> への未検査キャスト⇒△と言われる
49
- JSONArray list = obj.getJSONArray("list"); // これだとエラー
50
48
 
51
49
  //この後配列を使いたい。。。
52
50
  for (int j = 0; j < list .length(); ++ j) {...}
@@ -57,8 +55,25 @@
57
55
 
58
56
  ### 試したこと
59
57
 
58
+ ※1の部分でobj.get("list")の型が知りたかったので、以下四つを試し、
59
+ - if (obj.get("list") instanceof Object)
60
+ - if (obj.get("list") instanceof String)
60
- obj.get("list")の型がわからないので、instanceofを試して「Object型」「List型」でtrueでしたがList<String>では受けられませんでした。
61
+ - if (obj.get("list") instanceof JSONObject)
62
+ - if (obj.get("list") instanceof List)
61
63
 
64
+ Object,Listの場合Trueが返されたので、List<String>型で受け取れるはず、と※1のように記載しましたが
62
- ### 補足情報(FW/ツールバージョンなど)
65
+ 記述時点で「型の不一致: Object から List<String> には変換できません」と警告がでてしまいました。
63
66
 
67
+
68
+ 型の不一致のため、キャストする方法に変更しましたが、以下の通り記載すると、
69
+ 「Objectから List<Object> への未検査キャスト」と警告表示されます。
70
+ - List<String> list = (List<String>) obj.get("list");
71
+
72
+
73
+ また、ほかの配列(JSONArray)で受けられるかと思い、以下のようにしましたが、
64
- なし
74
+ 実行時型が違います、とエラー表示されます。
75
+ - JSONArray list = obj.getJSONArray("list");
76
+
77
+
78
+
79
+ ### 補足情報(FW/ツールのバージョンなど)