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

回答編集履歴

3

コードを質問に合わせて修正

2020/02/07 09:18

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -5,22 +5,68 @@
5
5
  import org.json.*;
6
6
 
7
7
  public class JsonTest {
8
+
9
+ static List<Map<String, Object>> getList() {
10
+ ArrayList<Map<String, Object>> list = new ArrayList<>();
11
+ {
12
+ Map<String, Object> map = new HashMap<>();
13
+ map.put("id", "0");
14
+ map.put("name", "taro");
15
+ map.put("list", "AAA,BBB,CCC");
16
+ list.add(map);
17
+ }
18
+ {
19
+ Map<String, Object> map = new HashMap<>();
20
+ map.put("id", "1");
21
+ map.put("name", "hanako");
22
+ map.put("list", "DDD,EEE,FFF");
23
+ list.add(map);
24
+ }
25
+ return list;
26
+ }
27
+
8
28
  public static void main(String[] args) {
29
+ //Listを代入
9
- JSONObject obj = new JSONObject();
30
+ List<Map<String, Object>> List = getList();
10
- obj.put("id", 10);
11
- obj.put("list", new ArrayList<String>(Arrays.asList("aaa", "bbb", "ccc")));
12
- System.out.println(obj);
13
31
 
32
+ // 他のデータと整合するために、map化
33
+ Map<String, JSONObject> ObjectMap= new HashMap<>();
34
+ for(Map<String, Object> map : List) {
35
+ JSONObject Object = new JSONObject();
36
+ Object.put("id", map.get("id"));
37
+ Object.put("name", map.get("name"));
38
+ if(map.get("list") != null) {
39
+ String string = (String)map.get("list");
40
+ // ここでカンマ区切りのリストに変換
41
+ List<String> list = Arrays.asList(string.split(","));
42
+ Object.put("list", list);
43
+ }
44
+ ObjectMap.put(Object.getString("id"), Object);
45
+ }
46
+
47
+ // 別のデータと整合(内容は省略)
48
+ List<JSONObject> outputObjectList = new ArrayList<>();
49
+ for(String id : ObjectMap.keySet()) {
50
+ JSONObject jsonObject = ObjectMap.get(id);
51
+ jsonObject.put("address", "〇〇県");
52
+ outputObjectList.add(jsonObject);
53
+ }
54
+
55
+ // 取り出し
56
+ for (JSONObject obj : outputObjectList) {
57
+ System.out.println(obj);
14
- JSONArray list = obj.getJSONArray("list");
58
+ JSONArray list = obj.getJSONArray("list");
15
- System.out.println(list);
59
+ System.out.println(list);
60
+ }
16
61
  }
17
62
  }
18
63
  ```
19
64
  ```plain text
20
- {"id":10,"list":["aaa","bbb","ccc"]}
65
+ {"address":"〇〇県","name":"taro","id":"0","list":["AAA","BBB","CCC"]}
21
- ["aaa","bbb","ccc"]
66
+ ["AAA","BBB","CCC"]
67
+ {"address":"〇〇県","name":"hanako","id":"1","list":["DDD","EEE","FFF"]}
68
+ ["DDD","EEE","FFF"]
22
69
  ```
23
-
24
70
  ---
25
71
  試したり書いている内に進捗が進まれていました...
26
72
  こちらでは上記コードで警告等出ていません.

2

追記

2020/02/07 09:18

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -23,4 +23,8 @@
23
23
 
24
24
  ---
25
25
  試したり書いている内に進捗が進まれていました...
26
- こちらでは上記コードで警告等出ていません.
26
+ こちらでは上記コードで警告等出ていません.
27
+
28
+ 実際に返されているクラスを調べるのでしたら,
29
+ System.out.println(obj.get("list").getClass().getCanonicalName());
30
+ で表示されると思います.

1

追記

2020/02/07 08:59

投稿

jimbe
jimbe

スコア13357

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  obj.put("list", new ArrayList<String>(Arrays.asList("aaa", "bbb", "ccc")));
12
12
  System.out.println(obj);
13
13
 
14
- JSONArray list = obj.getJSONArray("list");;
14
+ JSONArray list = obj.getJSONArray("list");
15
15
  System.out.println(list);
16
16
  }
17
17
  }
@@ -19,4 +19,8 @@
19
19
  ```plain text
20
20
  {"id":10,"list":["aaa","bbb","ccc"]}
21
21
  ["aaa","bbb","ccc"]
22
- ```
22
+ ```
23
+
24
+ ---
25
+ 試したり書いている内に進捗が進まれていました...
26
+ こちらでは上記コードで警告等出ていません.