歡迎使用我的 在線工具

          小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 閱讀(1162) 評論(1)  編輯  收藏 所屬分類: javajs

          評論

          # re: VagaJson,一個JSON與Java對象的序列化工具[未登錄]  回復  更多評論   

          求教,將JSON轉換為Object的方法有么?我沒有找到哦。
          2013-03-06 09:35 | daniel
          主站蜘蛛池模板: 红桥区| 江门市| 桂东县| 丽水市| 淄博市| 安徽省| 绥化市| 会同县| 穆棱市| 贵港市| 鞍山市| 乳山市| 曲靖市| 宁南县| 涿鹿县| 勃利县| 黑山县| 行唐县| 吉水县| 大田县| 武宁县| 筠连县| 樟树市| 富裕县| 长白| 华容县| 南阳市| 淮北市| 泊头市| 美姑县| 诸城市| 乳源| 新安县| 海淀区| 蕉岭县| 鹤庆县| 安达市| 南康市| 普定县| 永昌县| 大港区|