Jfinal后台如何接收前台传送的Json格式数据,并转换为想要的格式如:pojo类型

Jfinal刚入门, 我jsp中使用可编辑miniui列表修改之后,调用jfinal来进行保存,但是我在jfinal的后台cotroller中怎么拿到类似于JavaBean数据格式(如:User.class).源码如下:js

  var json = mini.encode(rowData);

            grid.loading("保存中,请稍后......");

            var json = mini.encode(rowData);

            $.ajax({

                url: "jf/HomePageInfor/SaveChangedBggdszbData",

              

                data: { data: json },

                success: function (text) {

                    alert(text);

                    grid.reload();

                },

                error: function (jqXHR, textStatus, errorThrown) {

                    alert(jqXHR.responseText);

                }

            });

java方法:

*/

public void SaveChangedBggdszbData() {

String objJson = getPara("data");

String jsonData = HttpKit.readData(getRequest());

Map para = FastJson.getJson().parse(objJson, HashMap.class);

HomePageInfor hg = getModel(HomePageInfor.class);

HomePageInfor hgi = FastJson.getJson().parse(objJson,

HomePageInfor.class);

try {

// 从requst中读取json字符串

StringBuilder json = new StringBuilder();

BufferedReader reader = this.getRequest().getReader();

String line = null;

while ((line = reader.readLine()) != null) {

json.append(line);

}

reader.close();

// 调用fastjson解析出对象

参考了您在其他贴子的回答,还是没效果。


评论区

JFinal

2018-11-03 08:51

java script 发送的数据仍然会是 key value 键值对,所以还得用 getPara("data") 来获取,这种情况一定要彻底忘记 : HttpKit.readData(getRequest())

拿到数据以后,观察 json 数据格式是否正确,然后再用 FastJson 做 parse 转换

最后 fastjson 是根据 setter 方法来做的转换,所以你的 HomePageInfor 一定要先用 jfinal 生成器生成 setter 方法,生成器在首页的 jfinal demo 中有现成的,改改配置即可使用

白云君

2018-11-03 20:29

我也有这样的疑问,跟楼主一样,感觉这些其实可以写教程里。。

Onlyluo

2018-11-05 08:40

@白云君 是的,我也感觉。

Onlyluo

2018-11-05 09:10

@JFinal 对的,拿过来的数据是String类型的 key value 键值对格式,至于我的HomePageInfor类要先用jfinal生成器生成setter方法,我用的事传统的自动生成get/set方法。

JFinal

2018-11-05 09:12

@Onlyluo 只要有 setter 方法存在就行,不论是传统 Java bean 还是 jfinal 的 model

Onlyluo

2018-11-05 09:34

@JFinal 这样的话麻烦你帮我看看是什么问题呗我已经生成get/set方法了。这是我使用String objJson = getPara("data");拿到的数据:([{"ORG_ID":"06010104","YY_10KVYSXS_LJ":null,"YY_DNDFHSL_LJ":null,"YY_TQXSYCL_DY":null,"DATA_DATE":"2018-10-

01","PW_ZYXLGZL_DY":null,"PW_GZQXB_LJ":null,"ROWNUM_":1,"YY_HBGXYZL_LJ":null,"YY_DFCCL_DY":null,"PW_CSJMDYHGL_LJ":"12","YY_TQXSYCL_LJ":null,"PW_ZYXLGZL_JL":null,"_id":1,"_

uid":1,"_state":"modified"}])!!后面是我生成的 HomePageInforBean类:private String yy_khtsl_dy;
private String yy_khtsl_lj;
private String bz;

public String getOrg_id() {
return org_id;
}

public void setOrg_id(String org_id) {
this.org_id = org_id;
}

public String getOrg_name() {
return org_name;
}

public void setOrg_name(String org_name) {
this.org_name = org_name;
}
使用Jackson.getJson().parse(objJson,HomePageInfor.class);转换时一直报错。

JFinal

2018-11-05 10:32

@Onlyluo 生成的 setter 方法是错误的,例如字段 "ORG_NAME" 生成的 setter 方法名应该为: "setOrgName" ,按 java bean 标准来

此外,建议用 FastJson.getJson().parse(...) 做转换

Onlyluo

2018-11-05 15:35

@JFinal 我有点小疑惑啊,(1)、ORG_NAME我的数据库表字段就是ORG_NAME这样格式的,不可能去改字段吧。(2)、我是属性(ORG_NAME)是用myeclipes 中Generate自动生成的get/set方法。应该就是按照java bean 的标准来的啊。

JFinal

2018-11-05 16:06

@Onlyluo 当然不是让你改数据库字段,让你改 getter 方法名而已,生成器去生成就好

JFinal

2018-11-05 16:07

@Onlyluo myeclipse 生成的是错误的,必然是 setOrgName 才正确,不相信的话,我也帮不到你了

Onlyluo

2018-11-06 17:28

@JFinal 好吧,我换了中方式实现。我介意博主你可以写个完整点的demo,感觉遇到这样的问题很多。

热门反馈

扫码入社