Rev 1776 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1733 | jmachado | 1 | |
2 | |||
3 | Serializador de JSON |
||
4 | |||
5 | Exemplo |
||
6 | |||
7 | Genson.Builder gensonBuilder = new Genson.Builder() |
||
8 | |||
9 | .include(RepositoryDocumentCollectionImpl.class) |
||
10 | .include("name", RepositoryDocumentCollection.class) |
||
11 | .include("description",RepositoryDocumentCollection.class) |
||
12 | .include("legacyUrl", RepositoryDocumentCollection.class) |
||
13 | .include("treeName", RepositoryDocumentCollection.class) |
||
14 | .include("pathName", RepositoryDocumentCollection.class) |
||
15 | .include("treeHiffens", RepositoryDocumentCollection.class) |
||
16 | .include("collectionManagers", RepositoryDocumentCollection.class) |
||
17 | .include("id",UserImpl.class) |
||
18 | .include("name",UserImpl.class) |
||
19 | .include("sigesCode",SigesUserImpl.class) |
||
20 | .exclude("parent", RepositoryDocumentCollection.class); |
||
21 | |||
22 | genson = gensonBuilder.create(); |
||
23 | |||
24 | Devemos incluir ou excluir metodos segundo os properties do bean em questão |
||
25 | |||
26 | Por exemplo |
||
27 | |||
28 | .exclude(Object.class) |
||
29 | |||
30 | |||
31 | |||
32 | |||
33 | |||
34 | significa que vai ser usada a propriedade getName e setName para serializar/descerealizar |
||
35 | |||
36 | |||
37 | |||
38 | |||
39 | |||
40 | .include("collectionManagers", RepositoryDocumentCollection.class) |
||
41 | |||
42 | |||
43 | |||
44 | |||
45 | Quando se envia JSON da WEB para descerializar é necessário cuidado com objetos desconhecidos |
||
46 | |||
47 | Por exemplo se estivermos a importar um InterfaceBlock e usarmos um elemento choosedCol auxiliar no |
||
48 | bloco para escolher uma colecção antes de adicionar à lista de escolhidas |
||
49 | Não podemos usar arrays dentro do choosedCol porque este já é desconhecido, nem é um Objeto |
||
50 | da Classe, e o facto de ter um array vazio causa problemas de descerialização |
||
51 | |||
52 | Exemplo |
||
53 | |||
54 | "blocks": [ |
||
55 | |||
56 | "collectionIds": [ |
||
57 | 10 |
||
58 | ], |
||
59 | "datesFormat": "YY", |
||
60 | "description": null, |
||
61 | "maxPublishDateStr": "", |
||
62 | "minPublishDateStr": "", |
||
63 | "orderBy": "publishDateDesc", |
||
64 | "showDescription": false, |
||
65 | "showDocumentDescription": true, |
||
66 | "showDocumentMetaData": false, |
||
67 | "showDocumentTitle": true, |
||
68 | "showFileDescription": false, |
||
69 | "showFileTitle": true, |
||
70 | "showTitle": true, |
||
71 | "title": null, |
||
72 | "tree": false, |
||
73 | "type": "block", |
||
74 | "choosedCol": { |
||
75 | "id": 10, |
||
76 | "treeName": "-INFORMAÇÃO INSTITUCIONAL", |
||
77 | "treeHiffens": "-", |
||
78 | "visible": true, |
||
79 | "pathName": "IPP - INFORMAÇÃO INSTITUCIONAL", |
||
80 | "legacyUrl": null, |
||
81 | "description": null, |
||
82 | "name": "INFORMAÇÃO INSTITUCIONAL" |
||
83 | >>>>>> "collectionManagers" : [] << NESTE NIVEL ESTE TIPO DE ELEMENTO VAI REBENTAR COM A DESCERIALIZAÇÃO |
||
84 | } |
||
85 | } |
||
86 | ], |
||
87 | |||
88 | |||
89 | |||
90 | |||
91 | public String toJson() throws IOException, TransformationException |
||
92 | |||
93 | return genson.serialize(this); |
||
94 | } |
||
95 | |||
96 | public static RepositoryInterface loadFromJson(String json) throws IOException, TransformationException { |
||
97 | |||
98 | } |
||
99 | |||
100 | public JSONObject toJsonObject() throws IOException, TransformationException, JSONException { |
||
101 | |||
102 | } |
||
103 | |||
104 | Para mais detalhes veja na classe: |
||
105 | |||
106 | pt.estgp.estgweb.services.data.repositorydocuments.interfaces.RepositoryInterface |
||
107 | |||
108 | Generated by GNU Enscript 1.6.5.2. |