欢迎使用我的 在线工具

小D

读历史、看小说、写程序都是我所爱。技术不好,头脑不灵光,靠的是兴趣。
随笔 - 35, 文章 - 25, 评论 - 13, 引用 - 0
数据加载中……

VagaJson,一个JSON与Java对象的序列化工具

     一直很喜欢JSON这种数据格式,它简洁高效,没什么冗余的数据,趁着离职回家,没什么事做,就写一个JSON字符串反序列化为Java对象,然后能将Java对象序列化为JSON字符串的工具。
    1. JSON字符串反序列化Java对象:
    严格来说是JsonObject和JsonArray对象,分别对应了Json中的对象和数组。这里采用了Douglas Crockford的递归降序的JSON解释器的方法,我编写Java版本,所以这个解析器的所有权利都是Douglas Crockford的。通过该解析器就能将Json字符串序列化为相应的JsonObject和JsonArray对象,然后能可以访问这些对象来获取你想要的值。你可以这样使用:
 1    public void testValue(){
 2        JsonHolder obj = (JsonHolder) new JsonParser().doParse(new File("c:\\cc.json"));
 3        if(obj.isArray()){
 4            JsonArray jarr = (JsonArray) obj;
 5            JsonObject jo = (JsonObject) jarr.get(2);
 6            System.out.println(jo.getValue("pdate"));
 7            System.out.println(jo.getValue("id"));
 8            JsonArray joa = (JsonArray) jo.getValue("users");
 9            JsonObject joo = (JsonObject) joa.get(2);
10            System.out.println(joo.getValue("name"));
11            
12            System.out.println(joo.isEmpty());
13        }

14    }
cc.json是一个保存有Json字符串的文件,你也可以直接传入Json字符串。

  2. Java对象的Json字符串序列化。可以将Collection接口的实现类的对象及Map接口的实现对象转换成Json字符串,对于普通Java对象来说,只是将其属性转换成Json属性,所谓的Java对象的属性,就是以get开头的方法。你可以这样使用:
 1    public void testMap() {
 2
 3        Map ss = new HashMap();
 4        
 5        for(int i = 0; i < 10; i++){
 6            Article a = new Article();
 7            a.setId(12321);
 8            a.setContent("说法适当方式的士大夫 <map>");
 9            a.setIsPrime(true);
10            a.setTitle("斯蒂芬速度ddddsds <map>");
11            User []us = new User[5];
12            for(int j = 0; j < 5;j++){
13                User u = new User();
14                u.setId(12312);
15                u.setName("daimin");
16                us[j] = u;
17                
18            }

19            a.setUsers(us);
20            a.setPdate(new Date());
21            ss.put(i+"", a);
22        }

23        
24        String res = Json.toJson(ss,false,"C://cc.json");
25    
26    }

相信的使用方法可以参加源码中的test包下面的代码。本工具支持Java1.4及其以上版本。
你可以自由的使用该工具,但是本人不保证其效率及功能的完整性,如果能有任何的反馈,我会很乐意的修改,如果你能将该工具用于任何的项目中,我也十分的荣幸,不过请保留本人的名字。

源码在这里下载,同时里面还有一个工具VersionHelper,它能将版本信息或者许可协议添加到Java类文件的开头。

posted on 2011-07-29 22:27 vagasnail 阅读(1130) 评论(1)  编辑  收藏 所属分类: javajs

评论

# re: VagaJson,一个JSON与Java对象的序列化工具[未登录]  回复  更多评论   

求教,将JSON转换为Object的方法有么?我没有找到哦。
2013-03-06 09:35 | daniel

只有注册用户登录后才能发表评论。


网站导航: