Bonjour,
Je pensais avoir compris le fonctionnement mais la je sèche.
Voici un code tut simple qui retourne des classes différentes pour une structure identique !
Résultat de l'exécution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40 from marshmallow import Schema, fields, post_load class Class_test_struct1(): def __init__(self, attr1): self.attr1=attr1 class Class_test_struct1Schema(Schema): attr1=fields.String() class Class_test_struct2(): def __init__(self, attr2): self.attr2=attr2 class Class_test_struct2Schema(Schema): attr2=fields.String() class Class_test(): def __init__(self, struct1, struct2): self.struct1=struct1, self.struct2=struct2 class Class_testSchema(Schema): struct1=fields.Nested(Class_test_struct1Schema) struct2=fields.Nested(Class_test_struct2Schema) @post_load def make_Class_test(self, data, **kwargs): return Class_test(**data) inputJson={ "struct1": { "attr1": "where is" }, "struct2": { "attr2": "the bug?" } } schema = Class_testSchema() result = schema.load(inputJson) print("Returned class: %s" % type(result)) print("type(result.struct1) = %s" % type(result.struct1)) print(result.struct1) print("type(result.struct2) = %s" % type(result.struct2)) print(result.struct2)Pourquoi un tuple ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Returned class: <class '__main__.Class_test'> type(result.struct1) = <class 'tuple'> ({'attr1': 'where is'},) type(result.struct2) = <class 'dict'> {'attr2': 'the bug?'}
Partager