|
| Pour les spécialistes JSON :) |
| Iniciado por lionel, 26,ago. 2019 13:55 - 5 respuestas |
| |
| | | |
|
| |
| Publicado el 26,agosto 2019 - 13:55 |
Bonjour,
Je butte sur la création d'un JSON. Je dois obtenir le résultat suivant
{ "promotion_id": "215", "company_id": "3", "conditions": { "set": "all", "set_value": "1", "conditions": { "1": { "operator": "in", "condition": "flash_deal", "products": [ { "id": "1699", "product_id": "64566", "stock": "20" } ] }, "2": { "operator": "eq", "condition": "usergroup", "value": "2", "condition_id": 2 } } }, "bonuses": { "1": { "bonus": "product_discount", "discount_bonus": "to_fixed", "discount_value": 13 } }, "to_date": "1566288000", "from_date": "1566201600", "priority": "1", "stop": "Y", "zone": "catalog", "status": "A", "name": "Flash Deal", "short_description": "Flash Deal", "detailed_description": "", "lang_code": "de" }
Mais je n'arrive pas à coder les 2 conditions avec les ..nom=1 et 2 J'ai essayé ceci mais ça le résultat n'est pas bon:
vFlashDealB2C.conditions.conditions.operator..Nom = "1" vFlashDealB2C.conditions.conditions.operator = "in" vFlashDealB2C.conditions.conditions.condition = "flash_deal" vFlashDealB2C.conditions.conditions.products[1].product_id = nIdProduct vFlashDealB2C.conditions.conditions.products[1].stock = FlashSales.Qte_Flash vFlashDealB2C.conditions.conditions.operator..Nom = "2" vFlashDealB2C.conditions.conditions.operator = "eq" vFlashDealB2C.conditions.conditions.condition = "usergroup" vFlashDealB2C.conditions.conditions.value = "2"
Avec ceci non plus:
vFlashDealB2C.conditions.conditions[1].operator..Nom = "1" vFlashDealB2C.conditions.conditions[1].operator = "in" vFlashDealB2C.conditions.conditions[1].condition = "flash_deal" vFlashDealB2C.conditions.conditions[1].products[1].product_id = nIdProduct vFlashDealB2C.conditions.conditions[1].products[1].stock = FlashSales.Qte_Flash
vFlashDealB2C.conditions.conditions[2].operator..Nom = "2" vFlashDealB2C.conditions.conditions[2].operator = "eq" vFlashDealB2C.conditions.conditions[2].condition = "usergroup" vFlashDealB2C.conditions.conditions[2].value = "2"
Si quelque'un à une idée.. Merci |
| |
| |
| | | |
|
| | |
| |
| Publicado el 26,agosto 2019 - 14:26 |
Je m'en suis sorti par une pirouette!:
vFlashDealB2C.conditions.conditions.ind1.operator = "in" vFlashDealB2C.conditions.conditions.ind1.condition = "flash_deal" vFlashDealB2C.conditions.conditions.ind1.products[1].product_id = nIdProduct vFlashDealB2C.conditions.conditions.ind1.products[1].stock = FlashSales.Qte_Flash vFlashDealB2C.conditions.conditions.ind2.operator = "eq" vFlashDealB2C.conditions.conditions.ind2.condition = "usergroup" vFlashDealB2C.conditions.conditions.ind2.value = "2"
Puis je remplace ind1 et ind2 par 1 et 2. That's it!
Pour info on ne peut pas écrire ceci:
vFlashDealB2C.conditions.conditions.1.operator = "in"
Cela génère un erreur de compilation sur .1. Bon dev à tous! |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 953 mensajes |
|
| Publicado el 27,agosto 2019 - 09:23 |
Bonjour Lionel,
avec les indirections vous devriez vous en sortir , vous devriez pouvoir écrire ceci , çà devrait fonctionner :
{"vFlashDealB2C.conditions.conditions.1.operator",indVariable} = "in"
ou
_id_condition est un entier=0 {"vFlashDealB2C.conditions.conditions."+_id_condition+".operator",indVariable} = "in"
bon dèv |
| |
| |
| | | |
|
| | |
| |
| Publicado el 27,agosto 2019 - 09:44 |
Merci Christophe,
En effet, cela sera plus propre
Bon dev |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 512 mensajes |
|
| Publicado el 28,agosto 2019 - 12:42 |
Bonjour à tous,
En WLangage, quand un nom symbolique risque de ne pas être reconnu ou de ne pas être correctement interprété, alors on a toujours la ressource de pouvoir l'encadrer par des caractères apostrophes (simple quote) et ainsi être très explicite quant au fait qu'il s'agit d'un nom symbolique.
Dans l'exemple du membre nommé "1", l'analyse syntaxique considère que c'est le nombre 1 et que donc l'expression est mal formée. Mais si on l'encadre avec des apostrophes, alors tout se passe bien et '1' est immédiatement pris en compte en tant que nom symbolique.
vFlashDealB2C.conditions.conditions.'1'.operator = "in"
Dans l'absolu, on pourrait placer tous les noms symboliques entre apostrophes. Ce n'est pas utile, mais c'est pour l'exemple. 
'vFlashDealB2C'.'conditions'.'conditions'.'1'.'operator' = "in"
Juste pour la bizarrerie syntaxique... Dans un nom de procédure, on pourrait utiliser le caractère espace (ou n'importe quel caractère que l'éditeur de code permet de saisir) ce qui nécessite d'encadrer le nom de procédure avec l'apostrophe.
Procedure 'Ma Procedure AVEC Espace ET Exclamation DANS le Nom !!!'() : chaîne
RENVOYER "OK"
Et pour exécuter la procédure...
Trace('Ma Procedure AVEC Espace ET Exclamation DANS le Nom !!!'())
-- Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/… |
| |
| |
| | | |
|
| | |
| |
| Publicado el 28,agosto 2019 - 12:54 |
| Grand merci JBO pour ces explications! |
| |
| |
| | | |
|
| | | | |
| | |
|