Subversion Repositories bacoAlunos

Rev

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.