回答編集履歴

3

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

2020/02/07 09:18

投稿

jimbe
jimbe

スコア12670

test CHANGED
@@ -12,21 +12,111 @@
12
12
 
13
13
  public class JsonTest {
14
14
 
15
- public static void main(String[] args) {
16
15
 
17
- JSONObject obj = new JSONObject();
18
16
 
19
- obj.put("id", 10);
17
+ static List<Map<String, Object>> getList() {
20
18
 
21
- obj.put("list", new ArrayList<String>(Arrays.asList("aaa", "bbb", "ccc")));
19
+ ArrayList<Map<String, Object>> list = new ArrayList<>();
22
20
 
21
+ {
22
+
23
+ Map<String, Object> map = new HashMap<>();
24
+
25
+ map.put("id", "0");
26
+
27
+ map.put("name", "taro");
28
+
29
+ map.put("list", "AAA,BBB,CCC");
30
+
23
- System.out.println(obj);
31
+ list.add(map);
32
+
33
+ }
34
+
35
+ {
36
+
37
+ Map<String, Object> map = new HashMap<>();
38
+
39
+ map.put("id", "1");
40
+
41
+ map.put("name", "hanako");
42
+
43
+ map.put("list", "DDD,EEE,FFF");
44
+
45
+ list.add(map);
46
+
47
+ }
48
+
49
+ return list;
50
+
51
+ }
24
52
 
25
53
 
26
54
 
27
- JSONArray list = obj.getJSONArray("list");
55
+ public static void main(String[] args) {
28
56
 
57
+ //Listを代入
58
+
59
+ List<Map<String, Object>> List = getList();
60
+
61
+
62
+
63
+ // 他のデータと整合するために、map化
64
+
65
+ Map<String, JSONObject> ObjectMap= new HashMap<>();
66
+
67
+ for(Map<String, Object> map : List) {
68
+
69
+ JSONObject Object = new JSONObject();
70
+
71
+ Object.put("id", map.get("id"));
72
+
73
+ Object.put("name", map.get("name"));
74
+
75
+ if(map.get("list") != null) {
76
+
77
+ String string = (String)map.get("list");
78
+
79
+ // ここでカンマ区切りのリストに変換
80
+
81
+ List<String> list = Arrays.asList(string.split(","));
82
+
83
+ Object.put("list", list);
84
+
85
+ }
86
+
87
+ ObjectMap.put(Object.getString("id"), Object);
88
+
89
+ }
90
+
91
+
92
+
93
+ // 別のデータと整合(内容は省略)
94
+
95
+ List<JSONObject> outputObjectList = new ArrayList<>();
96
+
97
+ for(String id : ObjectMap.keySet()) {
98
+
99
+ JSONObject jsonObject = ObjectMap.get(id);
100
+
101
+ jsonObject.put("address", "〇〇県");
102
+
103
+ outputObjectList.add(jsonObject);
104
+
105
+ }
106
+
107
+
108
+
109
+ // 取り出し
110
+
111
+ for (JSONObject obj : outputObjectList) {
112
+
113
+ System.out.println(obj);
114
+
115
+ JSONArray list = obj.getJSONArray("list");
116
+
29
- System.out.println(list);
117
+ System.out.println(list);
118
+
119
+ }
30
120
 
31
121
  }
32
122
 
@@ -36,13 +126,15 @@
36
126
 
37
127
  ```plain text
38
128
 
39
- {"id":10,"list":["aaa","bbb","ccc"]}
129
+ {"address":"〇〇県","name":"taro","id":"0","list":["AAA","BBB","CCC"]}
40
130
 
41
- ["aaa","bbb","ccc"]
131
+ ["AAA","BBB","CCC"]
132
+
133
+ {"address":"〇〇県","name":"hanako","id":"1","list":["DDD","EEE","FFF"]}
134
+
135
+ ["DDD","EEE","FFF"]
42
136
 
43
137
  ```
44
-
45
-
46
138
 
47
139
  ---
48
140
 

2

追記

2020/02/07 09:18

投稿

jimbe
jimbe

スコア12670

test CHANGED
@@ -49,3 +49,11 @@
49
49
  試したり書いている内に進捗が進まれていました...
50
50
 
51
51
  こちらでは上記コードで警告等出ていません.
52
+
53
+
54
+
55
+ 実際に返されているクラスを調べるのでしたら,
56
+
57
+ System.out.println(obj.get("list").getClass().getCanonicalName());
58
+
59
+ で表示されると思います.

1

追記

2020/02/07 08:59

投稿

jimbe
jimbe

スコア12670

test CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- JSONArray list = obj.getJSONArray("list");;
27
+ JSONArray list = obj.getJSONArray("list");
28
28
 
29
29
  System.out.println(list);
30
30
 
@@ -41,3 +41,11 @@
41
41
  ["aaa","bbb","ccc"]
42
42
 
43
43
  ```
44
+
45
+
46
+
47
+ ---
48
+
49
+ 試したり書いている内に進捗が進まれていました...
50
+
51
+ こちらでは上記コードで警告等出ていません.