要怎么把json格式字符串转成对应的类

com.alibaba.fastjson.JSON.parseObject  不行

com.jfinal.json.Json.getJson().parse(也就是JsonKit.parse)也不行

com.jfinal.json.FastJson.getJson().parse 还是不行

这个到底还要怎样?????


评论区

JFinal

2017-02-09 14:37

先将json 实现切换一下,例如: me.setJsonFactory(new MixedJsonFactory()),然后就可以用 parse 方法对 json string 反序列化成 java object 了

注意 MixedJsonFactory 对 fastjson 有依赖,需要引入相关的 jar 包

杜福忠

2017-02-09 15:05

实践出真"汁"...

public static void main(String[] args) {
PropKit.use("a_little_config.txt");
DruidPlugin dp = DemoConfig.createDruidPlugin();
ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
arp.addMapping("blog", Blog.class);
// 与web环境唯一的不同是要手动调用一次相关插件的start()方法
dp.start();
arp.start();
// 通过上面简单的几行代码,即可立即开始使用
new Blog().set("title", "title1").set("content", "cxt text").save();
new Blog().set("title", "title2").set("content", "cxt text").save();

//--------------------------------------------------------------------
// ----- 使用 fastjson 互转
Blog blog = Blog.me.findById(1);

//----- 使用 JsonKit : 类 转 json
String blogJson = blog.toJson();

System.out.println("blogJson:\t" + blogJson);

//----- 使用 fastjson : json 转 类
Blog parseObject = JSONObject.parseObject(blogJson, Blog.class);

System.out.println("parseObject.toJson(): \t" + parseObject.toJson());

//---------------------------------------------------------------------

List blogByAll = Blog.me.queryByAll();

//----- 使用 JsonKit : 类集合 转 json集合
String blogByAllJson = JsonKit.toJson(blogByAll);
System.out.println("blogByAllJson: \t" + blogByAllJson);

//----- 使用 fastjson : json集合 转 类集合
List jsons = JSONArray.parseArray(blogByAllJson, Blog.class);

for (Blog parse : jsons) {
System.out.println("List for : \t" + parse.toJson());
}
}

zhaozhihong

2017-02-09 15:06

@JFinal 我引入fastJson-1.2.24.jar,在configConstant中添加了me.setJsonFactory(new MixedJsonFactory()),使用JsonKit.parse来转JsonKit.toJson转来的jsonstr结果确是只有一对“{}”,其中JsonKit.toJson转json串是没问题的

杜福忠

2017-02-09 15:09

@JFinal 老大,上面的使用方式 有不妥的地方吗?

zhaozhihong

2017-02-09 15:17

@杜福忠 我将json字符串转回类结果为“{}”,不知道哪里有问题

杜福忠

2017-02-09 15:17

@杜福忠 ps : 上面的方法依赖于 BaseBlog 也就是 JavaBean, 得有getXxx,setXxx

杜福忠

2017-02-09 15:23

@zhaozhihong 你肯定没有 BaseXxx, fastjson 里面是裁了 getXxx,setXxx 的三个字符.... 所以它就能知道需要put 哪些东西

JFinal

2017-02-09 16:15

@杜福忠 没什么不妥,jfinal 的大部分模块都是开放式设计,很方便支持各种扩展,包括 json 实现的扩展

热门反馈

扫码入社