ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage functions / Standard functions / String functions
  • Encodage
  • Contenu du variant
  • Tester NULL sur une valeur
WINDEV
WindowsLinuxJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac Catalyst
Others
Stored procedures
Convertit une chaîne au format JSON en une variable de type Variant.
sJZon is string ANSI = [
	{
	"glossary": {
	"title": "example glossary",
	"GlossDiv": {
	"title": "S",
	"GlossList": {
	"GlossEntry": {
	"ID": "SGML",
	"SortAs": "SGML",
	"GlossTerm": "Standard Generalized Markup Language",
	"Acronym": "SGML",
	"Abbrev": "ISO 8879:1986",
	"GlossDef": {
	"para": "A meta-markup language, used to create markup languages such as DocBook.",
	"GlossSeeAlso": ["GML", "XML"]
	},
	"GlossSee": "markup"
	}
	}
	}
	}
	}
]

let jz = JSONToVariant(sJZon)
Syntax
<Résultat> = JSONVersVariant(<Données JSON>)
<Résultat>: Variant
Nom de la variable de type Variant contenant le résultat de la conversion.
<Données JSON>: Chaîne de caractères ANSI encodé en ASCII 7 bits + encodage JSON ou UTF-8
Chaîne de caractères contenant les données au format JSON.
Remarks

Encodage

L'encodage utilisé correspond au standard JSON :
  • utilisation d'un encodage en ASCII 7 bits pour les 128 premiers caractères, les caractères non accentués,
  • utilisation d'un encodage JSON des autres caractères : "\u" suivi du code du caractère en hexadécimal sur 4. Exemple : pour "é" (code ASCII 233, code hexadécimal E9), l'encodage correspond à "\u00E9".

Contenu du variant

Le contenu du variant dépend du JSON manipulé. Il peut correspondre à :
  • la valeur Null,
  • un type simple : entier, chaîne de caractères, booléen, ...
  • un tableau,
  • un objet complexe (type MembreVariant, correspondant à un tableau de membres dont chaque membre est un variant).

Tester NULL sur une valeur

La valeur "NULL" est souvent utilisée en JSON.
Pour vérifier la valeur "NULL" d'un variant, il est possible :
  • d'utiliser la propriété Valeur du variant. Par exemple :
    v is Variant = JSONVersVariant("{""m"":null}")
    IF v.m..Value = Null THEN Trace("NULL")
  • de tester directement la valeur NULL. Par exemple :
    v is Variant = JSONVersVariant("{""m"":null}")
    IF v.m = Null THEN Trace("NULL")
Component: wd300xml.dll
Minimum version required
  • Version 19
This page is also available for…
Comments
Navegar nos dados de um json
js is JSON
FOR i = 1 _TO_ js..Member..Count
js..Member[i]..Name
END
Boller
23 Oct. 2023
exemplo jsontovariant
https://windevdesenvolvimento.blogspot.com/2021/05/dicas-3325-windev-webdev-mobile.html
https://youtu.be/MQ7SrcjV33E
EDT_retorno=""
S_url is string="https://economia.awesomeapi.com.br/json/last/USD-BRL"
IF HTTPRequest(S_url) THEN
EDT_retorno=UTF8ToAnsi(HTTPGetResult())
let json_dados=JSONToVariant(EDT_retorno)
FOR EACH json_linha OF json_dados..Member
FOR EACH json_linha_Detalhe OF json_linha
IF json_linha_Detalhe..Name="high" THEN
EDT_dolar=json_linha_Detalhe..Value
END
END
END
END
amarildo
11 May 2021
Video Json
bom dia
https://youtu.be/WkltQUt_Bak
https://windevdesenvolvimento.blogspot.com/2019/07/dicas-2204-windev-webdev-mobile-json-6.html
// Youtube Amarildo Matos
s_json_dados is string=fLoadText(EDT_ARQUIVO_JSON)
//ESSA LINHA DIFERENTE
let variavel_json=JSONToVariant(s_json_dados)
//ESSA LINHA DIFERENTE
TableDeleteAll(TABLE_JSON)
FOR nNCONTADOR=1 TO variavel_json..Count
nNOCORRENCIA is int=TableAddLine(TABLE_JSON)
TABLE_JSON[nNOCORRENCIA].COL_SHORT_DESCRIPTION=variavel_json[nNCONTADOR].short_description
TABLE_JSON[nNOCORRENCIA].COL_PRICE=variavel_json[nNCONTADOR].price
TABLE_JSON[nNOCORRENCIA].COL_STOCK_QUANTITY=variavel_json[nNCONTADOR].stock_quantity
END

amarildo
18 Jul. 2019
Video JSONToVariant
https://youtu.be/ZC3G1PrDN9g

https://windevdesenvolvimento.blogspot.com/2019/05/dicas-2107-windev-webdev-mobile-json-4.html

// BTN_LER_SJON
TableDeleteAll(TABLE_CLIENTE)
vTeste is Variant
vTeste=JSONToVariant(EDT_retorno)
FOR EACH indice OF vTeste
TableAddLine(TABLE_CLIENTE,indice.clienteid,indice.nome)
END

amarildo
13 May 2019

Last update: 09/23/2024

Send a report | Local help