VagaJson,一個JSON與Java對象的序列化工具
一直很喜歡JSON這種數據格式,它簡潔高效,沒什么冗余的數據,趁著離職回家,沒什么事做,就寫一個JSON字符串反序列化為Java對象,然后能將Java對象序列化為JSON字符串的工具。
1. JSON字符串反序列化Java對象:
嚴格來說是JsonObject和JsonArray對象,分別對應了Json中的對象和數組。這里采用了Douglas Crockford的遞歸降序的JSON解釋器的方法,我編寫Java版本,所以這個解析器的所有權利都是Douglas Crockford的。通過該解析器就能將Json字符串序列化為相應的JsonObject和JsonArray對象,然后能可以訪問這些對象來獲取你想要的值。你可以這樣使用:
2. Java對象的Json字符串序列化。可以將Collection接口的實現類的對象及Map接口的實現對象轉換成Json字符串,對于普通Java對象來說,只是將其屬性轉換成Json屬性,所謂的Java對象的屬性,就是以get開頭的方法。你可以這樣使用:
相信的使用方法可以參加源碼中的test包下面的代碼。本工具支持Java1.4及其以上版本。
你可以自由的使用該工具,但是本人不保證其效率及功能的完整性,如果能有任何的反饋,我會很樂意的修改,如果你能將該工具用于任何的項目中,我也十分的榮幸,不過請保留本人的名字。
源碼在這里下載,同時里面還有一個工具VersionHelper,它能將版本信息或者許可協議添加到Java類文件的開頭。
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

3

4

5

6

7

8

9

10

11

12

13

14

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
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

相信的使用方法可以參加源碼中的test包下面的代碼。本工具支持Java1.4及其以上版本。
你可以自由的使用該工具,但是本人不保證其效率及功能的完整性,如果能有任何的反饋,我會很樂意的修改,如果你能將該工具用于任何的項目中,我也十分的榮幸,不過請保留本人的名字。
源碼在這里下載,同時里面還有一個工具VersionHelper,它能將版本信息或者許可協議添加到Java類文件的開頭。
posted on 2011-07-29 22:27 vagasnail 閱讀(1162) 評論(1) 編輯 收藏 所屬分類: java 、js