JFinal3.0,如何处理Json请求

如题,controller中如何获取上送请求中的Json报文。

评论区

JFinal

2017-04-26 09:57

如下代码即可打完收枪
String jsonString = HttpKit.readData(getRequest());
User user = FastJson.getJson().parse(jsonString, User.class);

wendell620

2017-04-26 11:33

@JFinal 那这样不是可以在android里用来接收数据然后转换成javabean对象?

JFinal

2017-04-26 11:36

@wendell620 理论上是可以的,通常将 jfinal 用于 android、ios 服务端的多

迷路的猫

2017-04-26 11:58

@JFinal 问题完美决解

只谈风月

2017-06-07 22:37

请问jquery的ajax应该怎么写才可以用HttpKit.readData(getRequest());来读取json报文?我前端写出这都不出来
$.ajax({
"type": 'POST',
"url": 'xxxxxxxx',
"data": {'appID':appID,'title':title,'type':type},
"async" : false,
"success": function(data){
alert(data);
},
"dataType": "json"
});
是什么地方写错了吗?

JFinal

2017-06-07 22:44

@只谈风月 jquery 不能发送发送 http body 为 json 的数据,你这段代码本质上还是表单提交,dataType: json 仅仅表示将服务端返回的值当成 json 格式去处理

想要发送 HttpKit.readData(getRequest()); 可接收的数据,你得用 HttpClient 这样的客户端,或者 HttpKit.post(...) 来发送,浏览器中执行的 javascript 是无法做到的

zsq

2017-06-12 14:56

@JFinal FastJson.getJson().parse(jsonString, User.class);这里第二步转换后的User对象属性为空。

小王哥

2017-06-13 09:45

@只谈风月 你这个问题解决了吗?我用ajax传数据也是接受不了,用getPara 也不行 getBean getModel 几种都试过了 都不行,如果实现了 请分享下

迷路的猫

2017-06-13 10:58

@小王哥 你是如何用ajax传递数据的呢?是不是什么地方写错了

只谈风月

2017-06-13 20:31

@小王哥 解决了,用了一种折中的方法。
先把要发送的内容保存成JSON格式,比如
jsonData = {'appID':appID,'title':title,'type':type,'priority':priority,'content':content,'content_type':content_type,'isReceipt':isReceipt,midList:[mid]};
然后在用jquery的ajax方法

只谈风月

2017-06-13 20:33

@小王哥 $.ajax({
"type": 'POST',
//"contentType":'application/json',
"url": encodeURI(encodeURI(cxt + actionUrl)),
"data": {"data":JSON.stringify(jsonData)},
"async" : false,
"success": function(data){
if(data.status == 1){
window.location.reload();
}else{
$.messager.alert("提示", data.message);
}
},
"dataType": "json"
});
然后在服务端直接按照'data'的参数名称取出来的内容再进行反序列化成java对象

renzy

2017-08-30 10:05

$.ajax({
url: "xxxxxxx",
method: "POST",
dataType: "json",
crossDomain: true,
contentType: "application/json; charset=utf-8",

清墨夕颜

2017-09-15 20:09

@zsq 把生成器的链式生成方法设置成false,从新生成一遍就可以了

healerqwer

2017-09-20 10:56

@JFinal 波总, 我用HttpKit.readData(getRequest());方法接收json,但是我的json中传了视频文件的base64编码,上传20多M以上的时候,这个方法会出现内存溢出,请问有别的解决办法么,初学jfinal,很多不懂

JFinal

2017-09-20 11:03

@healerqwer 20多 M 不至于内存溢出,你可以尝试边接收数据,边往文件里面存,处理的时候再从文件中读取出来

这个问题本质上与 jfinal 无关了,利用好已学的 java 知识解决就好

小焕545

2017-09-20 16:53

@清墨夕颜 什么意思 我也是报错

清墨夕颜

2017-10-09 19:00

_JFinalDemoGenerator类中 设置generator.setGenerateDaoInModel(false);@小焕545

年轻人

2017-10-17 17:07

@JFinal 波总,类似这种JFinal自带库(HttpKit、FastJson)的使用,在哪儿可以学习到呢?我在手册中没找到这个0.0

JFinal

2017-10-17 17:15

@年轻人 HttpKit 是简单的工具类,就那么几个简单的方法所以就没写到手册中去

fastjson 是整合的第三方,去 oschina.net 上找到这个第三方,然后就可以找到他的文档了

年轻人

2017-10-17 17:25

@JFinal 好的,谢谢波总

jack0604

2017-10-20 18:34

@zsq 我也是出现这样的问题,转换成对象,里面为空。

袁小猴

2017-12-12 18:11

@JFinal 完美。。。

YiQang

2017-12-21 11:31

@JFinal 用到了FastJson.getJson().parse(),出现了这样的错误:
com.jfinal.core.ActionHandler error
严重: /add
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.jfinal.aop.Invocation.invoke(Invocation.java:87)
at com.jfinal.core.ActionHandler.handle(ActionHandler.java:74)
at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:73)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1307)

JFinal

2017-12-21 14:04

@YiQang 异常的 cause 部分没有

YiQang

2017-12-21 15:01

@JFinal Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.jfinal.aop.Invocation.invoke(Invocation.java:73)
... 25 more
Caused by: java.lang.NoClassDefFoundError: com/alibaba/fastjson/JSON
at com.jfinal.json.FastJson.parse(FastJson.java:42)
at com.common.AddController.index(AddController.java:17)
... 30 more
Caused by: java.lang.ClassNotFoundException: com.alibaba.fastjson.JSON
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:430)
at com.jfinal.server.JFinalClassLoader.loadClass(JFinalClassLoader.java:53)
... 32 more