1
1
# JSON
2
2
3
- #### 6.2.1. 实体类
3
+ ### 实体类
4
4
5
5
``` java
6
6
package top.ppnt.java.ee.tio.http.server.boot.model ;
@@ -22,19 +22,19 @@ public class User {
22
22
}
23
23
```
24
24
25
- #### 6.2.2. 接收 Json 数据
25
+ ### 接收 Json 数据
26
26
27
- ##### 从 http 请求中获取 json 字符串
27
+ #### 从 http 请求中获取 json 字符串
28
28
29
29
从 http 请求中获取 json 字符串,接收 JSON 数据有需要手动转为 JavaBean
30
30
31
- ```
31
+ ``` java
32
32
String bodyString = request. getBodyString();
33
33
```
34
34
35
35
示例代码
36
36
37
- ```
37
+ ``` java
38
38
package com.litongjava.tio.boot.hello.AController ;
39
39
40
40
import com.litongjava.tio.http.common.HttpRequest ;
@@ -85,10 +85,12 @@ curl --location --request POST 'http://127.0.0.1/test/json/getBodyString' \
85
85
}'
86
86
```
87
87
88
- ##### 自动封装为 java bean
88
+ #### 自动封装为 java bean
89
89
90
90
在 Action 的方法签名上添加参数 User user
91
91
92
+ ##### 示例代码
93
+
92
94
```
93
95
import com.litongjava.tio.boot.hello.model.User;
94
96
import com.litongjava.tio.http.common.HttpRequest;
@@ -111,16 +113,14 @@ public class TestJsonController {
111
113
112
114
```
113
115
114
- 支持 application/json
116
+ #### 自动封装为 java bean 支持下面这些格式的请求
115
117
116
- ```
118
+ ##### 支持 POST 请求格式 application/json
119
+
120
+ ``` http
117
121
POST /demo/bean HTTP/1.1
118
122
Host: 127.0.0.1
119
- User-Agent: apifox/1.0.0 (https://www.apifox.cn)
120
123
Content-Type: application/json
121
- Accept: _/_
122
- Host: 127.0.0.1
123
- Connection: keep-alive
124
124
125
125
{
126
126
"ip": "69.134.20.34",
@@ -129,56 +129,50 @@ Connection: keep-alive
129
129
}
130
130
```
131
131
132
- 支持 application/x-www-form-urlencoded
132
+ ##### 支持 POST 请求格式 application/x-www-form-urlencoded
133
+
134
+ ``` http
133
135
134
- ```
135
136
GET /demo/bean HTTP/1.1
136
137
Host: 127.0.0.1
137
- User-Agent: apifox/1.0.0 (https://www.apifox.cn)
138
- Accept: _/_
139
- Host: 127.0.0.1
140
- Connection: keep-alive
141
138
Content-Type: application/x-www-form-urlencoded
142
139
143
140
loginName=Ping%20E%20Lee&nick=%E6%9D%8E%E9%80%9A&ip=127.0.0..1
141
+
144
142
```
145
143
146
- 支持发送 POST 请求 multipart/form-data
144
+ ###### 支持 POST 请求格式 multipart/form-data
145
+
147
146
示例
148
147
149
- ```
150
- GET /demo/bean HTTP/1.1
151
- Host: 127.0.0.1
152
- User-Agent: apifox/1.0.0 (https://www.apifox.cn)
153
- Accept: _/_
148
+ ``` http
149
+ POST /demo/bean HTTP/1.1
154
150
Host: 127.0.0.1
155
- Connection: keep-alive
156
151
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
157
152
158
153
----WebKitFormBoundary7MA4YWxkTrZu0gW
159
154
----WebKitFormBoundary7MA4YWxkTrZu0gW
160
155
----WebKitFormBoundary7MA4YWxkTrZu0gW
161
156
----WebKitFormBoundary7MA4YWxkTrZu0gW
157
+
162
158
```
163
159
164
- 支持 Get 请求
160
+ ##### 支持 Get 请求 Url 传递参数
161
+
165
162
示例如下
166
163
167
- ```
164
+ ``` http
165
+
168
166
GET /demo/bean?loginName=Ping%20E%20Lee&nick=%E6%9D%8E%E9%80%9A&ip=127.0.0..1 HTTP/1.1
169
167
Host: 127.0.0.1
170
- User-Agent: apifox/1.0.0 (https://www.apifox.cn)
171
- Accept: _/_
172
- Host: 127.0.0.1
173
- Connection: keep-alive
174
168
```
175
169
176
- #### 6.2.3. 返回 Json 数据
170
+ ### 返回 Json 数据
177
171
178
172
直接返回 json 数据
179
173
Action 的返回值可以直接是实体类,框架会自动进行转换
180
174
181
- ```
175
+ ``` java
182
176
package com.litongjava.tio.boot.hello.AController ;
183
177
184
178
import com.litongjava.tio.boot.hello.model.User ;
@@ -197,7 +191,6 @@ public class TestJsonController {
197
191
public User responseUser (HttpRequest request ) throws Exception {
198
192
return User . builder(). loginName(" Ping E Lee" ). nick(" 李通" ). ip(" 127.0.0.1" ). build();
199
193
}
200
-
201
194
}
202
195
203
196
```
@@ -207,17 +200,18 @@ public class TestJsonController {
207
200
该方法无需额外的 HTTP 响应处理,因为 tio-boot 框架将自动处理 User 对象的序列化并返回 JSON 格式的响应。
208
201
响应
209
202
210
- ```
203
+ ``` json
211
204
{
212
- "ip": "127.0.0.1",
213
- "loginName": "Ping E Lee",
214
- "nick": "李通"
205
+ "ip" : " 127.0.0.1" ,
206
+ "loginName" : " Ping E Lee" ,
207
+ "nick" : " 李通"
215
208
}
216
209
```
217
210
218
211
使用 Resps.json(request, user);返回 json 数据
219
212
220
- ```
213
+ ``` java
214
+
221
215
package com.litongjava.tio.boot.hello.AController ;
222
216
223
217
import com.litongjava.tio.boot.hello.model.User ;
@@ -239,6 +233,7 @@ public class TestJsonController {
239
233
return ret;
240
234
}
241
235
}
236
+
242
237
```
243
238
244
239
** Method ` responseJson ` ** :
@@ -252,22 +247,25 @@ public class TestJsonController {
252
247
http://127.0.0.1/demo/responseJson
253
248
响应
254
249
255
- ```
250
+ ``` json
256
251
{
257
- "ip": "127.0.0.1",
258
- "loginName": "Ping E Lee",
259
- "nick": "李通"
252
+ "ip" : " 127.0.0.1" ,
253
+ "loginName" : " Ping E Lee" ,
254
+ "nick" : " 李通"
260
255
}
261
256
```
262
257
263
258
使用 Resp 返回 Json 数据
264
259
核心代码
265
260
266
261
```
262
+
267
263
return Resps.json(request, Resp.ok(systemInfo));
264
+
268
265
```
269
266
270
267
```
268
+
271
269
package com.litongjava.tio.boot.hello.AController;
272
270
273
271
import com.litongjava.tio.boot.hello.model.User;
@@ -289,6 +287,7 @@ public class TestJsonController {
289
287
return Resps.json(request, Resp.ok(user));
290
288
}
291
289
}
290
+
292
291
```
293
292
294
293
** Method ` responseJsonResp ` ** :
@@ -299,19 +298,24 @@ public class TestJsonController {
299
298
- 最后,方法返回这个 ` HttpResponse ` 对象。
300
299
返回数据如下
301
300
302
- ```
301
+ ``` json
303
302
{
304
- "data": "数据部分",
305
- "ok": true
303
+ "data" : " 数据部分" ,
304
+ "ok" : true
306
305
}
307
306
```
308
307
309
- 使用 RespVo 返回 Json 数据
308
+ ##### 使用 RespVo 返回 Json 数据
309
+
310
310
核心代码
311
+
312
+ ```
311
313
return Resps.json(request, RespVo.ok(data));
314
+ ```
315
+
312
316
示例
313
317
314
- ```
318
+ ``` java
315
319
package com.litongjava.tio.boot.hello.AController ;
316
320
317
321
import com.litongjava.tio.boot.hello.model.User ;
@@ -334,6 +338,7 @@ public class TestJsonController {
334
338
return Resps . json(request, RespVo . ok(user));
335
339
}
336
340
}
341
+
337
342
```
338
343
339
344
** Method ` responseJsonResps ` ** :
@@ -344,9 +349,9 @@ public class TestJsonController {
344
349
- 最后,方法返回这个 ` HttpResponse ` 对象。
345
350
返回数据如下
346
351
347
- ```
352
+ ``` json
348
353
{
349
- "data": "数据部分",
350
- "ok": true
354
+ "data" : " 数据部分" ,
355
+ "ok" : true
351
356
}
352
- ```
357
+ ```
0 commit comments