Για να είμαι ειλικρινής, δεν έχω καταλάβει απόλυτα τι είναι αυτό ακριβώς που θέλεις. αλλά νομίζω πως θέλεις να δημιουργείς ένα δυναμικό JSON (
που να έχει και εμφωλευμένα πεδία ).
Αν λοιπόν κατάλαβα καλά..
Καταρχήν βλέπω πως υπάρχει το σταθερό μοτίβο :
{
"uid": - ,
"label": - ,
"parent": - ,
"allowedInDecisions": - ,
"extraFields": [ - ]
}
Και πάλι μέσα στο μπλοκ «extraFields» μπορεί να εμπεριέχει ένα σταθερό πράγμα (
όσες φορές χρειαστεί ) :
"uid": - ,
"label": - ,
"help": - ,
"type": - ,
"validation": - ,
"required": - ,
"multiple": - ,
"maxLength": - ,
"dictionary": - ,
"searchTerm": - ,
"relAdaDecisionTypes": - ,
"relAdaConstrainedInOrganization": - ,
"fixedValueList": - ,
"nestedFields": [ - ]
Οπότε ορίστε η δική μου πρόταση (
την λογική σου δίνω - τα πεδία μπορεί να μην είναι απλές μεταβλητές, αλλά παράμετροι ή δε ξέρω τι.. καταλαβαίνεις.. ):
Μια συνάρτηση για την βασική/σταθερή δομή του JSON ( λεξικού ) :
def fill_json_dynamically():
a_uid = "Β.1.3"
a_label = "ΑΝΑΛΗΨΗ ΥΠΟΧΡΕΩΣΗΣ"
a_parent = None
a_allowedInDecisions = True
# Basic JSON dictionary :
my_json = {}
my_json['uid'] = a_uid
my_json['label'] = a_label
my_json['parent'] = a_parent
my_json['allowedInDecisions'] = a_allowedInDecisions
my_json['extraFields'] = [ ]
return my_json
Μια συνάρτηση για τα «extraFields» :
def set_extra_fields():
a_uid = "financialYear"
a_label = "Οικονομικό Έτος"
a_help = "Εισάγετε το Οικονομικό Έτος"
a_type = "integer"
a_validation = None
a_required = True
a_multiple = False
a_maxLength = 4
a_dictionary = None
a_searchTerm = "textFinancialYear"
a_relAdaDecisionTypes = None
a_relAdaConstrainedInOrganization = None
a_fixedValueList = None
a_nestedFields = []
json_extra_fields = {}
json_extra_fields['uid'] = a_uid
json_extra_fields['label'] = a_label
json_extra_fields['help'] = a_help
json_extra_fields['type'] = a_type
json_extra_fields['validation'] = a_validation
json_extra_fields['required'] = a_required
json_extra_fields['multiple'] = a_multiple
json_extra_fields['maxLength'] = a_maxLength
json_extra_fields['dictionary'] = a_dictionary
json_extra_fields['searchTerm'] = a_searchTerm
json_extra_fields['relAdaDecisionTypes'] = a_relAdaDecisionTypes
json_extra_fields['relAdaConstrainedInOrganization'] = a_relAdaConstrainedInOrganization
json_extra_fields['fixedValueList'] = a_fixedValueList
json_extra_fields['nestedFields'] = a_nestedFields
return json_extra_fields
Και όλως μαζί ο κώδικας :
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
def set_extra_fields():
a_uid = "financialYear"
a_label = "Οικονομικό Έτος"
a_help = "Εισάγετε το Οικονομικό Έτος"
a_type = "integer"
a_validation = None
a_required = True
a_multiple = False
a_maxLength = 4
a_dictionary = None
a_searchTerm = "textFinancialYear"
a_relAdaDecisionTypes = None
a_relAdaConstrainedInOrganization = None
a_fixedValueList = None
a_nestedFields = []
json_extra_fields = {}
json_extra_fields['uid'] = a_uid
json_extra_fields['label'] = a_label
json_extra_fields['help'] = a_help
json_extra_fields['type'] = a_type
json_extra_fields['validation'] = a_validation
json_extra_fields['required'] = a_required
json_extra_fields['multiple'] = a_multiple
json_extra_fields['maxLength'] = a_maxLength
json_extra_fields['dictionary'] = a_dictionary
json_extra_fields['searchTerm'] = a_searchTerm
json_extra_fields['relAdaDecisionTypes'] = a_relAdaDecisionTypes
json_extra_fields['relAdaConstrainedInOrganization'] = a_relAdaConstrainedInOrganization
json_extra_fields['fixedValueList'] = a_fixedValueList
json_extra_fields['nestedFields'] = a_nestedFields
return json_extra_fields
def fill_json_dynamically():
a_uid = "Β.1.3"
a_label = "ΑΝΑΛΗΨΗ ΥΠΟΧΡΕΩΣΗΣ"
a_parent = None
a_allowedInDecisions = True
# Basic JSON dictionary :
my_json = {}
my_json['uid'] = a_uid
my_json['label'] = a_label
my_json['parent'] = a_parent
my_json['allowedInDecisions'] = a_allowedInDecisions
my_json['extraFields'] = [ set_extra_fields() ]
return my_json
def print_json(a_json):
print(json.dumps(a_json, sort_keys=True, indent=4, ensure_ascii=False))
if __name__ == '__main__':
json_dict = fill_json_dynamically()
print_json(json_dict)
Μπορείς να ακολουθήσει παρόμοια λογική και στα πεδία «nestedFields» & «fixedValueList»
Αν χρειαστείς όμως το οτιδήποτε, το ξανά συζητάμε.
Ωραίος που ασχολείσαι με την
Διαύγεια! Μπράβο!
Είναι στα πλαίσια κάποιου έργου που έχεις αναλάβει ;