L'enregistrement d'une table avec des valeurs numériques vides au format JSON entraîne une primitive JSON non valide?Si vous enregistrez une table avec des valeurs vides dans l'une des colonnes numériques comme ceci:
New Table( "testEmpty",
Add Rows( 2 ),
New Column( "Col1",
Character,
"Nominal",
Set Selected,
Set Values( {"test", "test"} )
),
New Column( "Col2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., .] )
)
)en tant que fichier JSON, il en résultera ceci:
[
{
"Col1" : "test",
"Col2" : .
},
{
"Col1" : "test",
"Col2" : .
}
]Il semble que tout le monde n'accepte pas qu'il s'agit d'une syntaxe JSON valide. Si je relis ce fichier vers JSON en utilisant, disons, Powershell:
$json = Get-Content -Path 'C:\Users\myUser\testEmpty.json' -ErrorAction Stop | ConvertFrom-Json
il va se tromper:
ConvertFrom-Json : Invalid JSON primitive: ..
At C:\Users\myUser\testEmpty.ps1:1 char:118
+ ... \myUser\testEmpty.json' -ErrorAction Stop | ConvertFrom-Json
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-Json], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
Une idée de comment résoudre ce problème? Des options lors de l'enregistrement des fichiers JSON à l'aide de scripts? Ou la seule solution de contournement consiste à vous assurer que la table ne contient pas de valeurs vides?
Tableau de donnéesScriptingRe: Enregistrer une table avec des valeurs numériques vides au format JSON entraîne une primitive JSON non valide?Je suis tout à fait sûr que ceux-ci devraient être modifiés en valeurs nulles pour être du JSON valide.
Si vous n'avez que deux colonnes, vous pouvez essayer de convertir les données en tableau associatif et cela en JSON (REMARQUE: le tableau associatif n'autorise pas les clés en double. Un JSON valide le fait mais je ne sais pas à quel point il serait agréable de travailler avec des clés dupliquées)
Names Default To Here(1);
dt = New Table( "testEmpty",
Add Rows( 2 ),
New Column( "Col1",
Character,
"Nominal",
Set Selected,
Set Values( {"test", "test1"} )
),
New Column( "Col2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [., .] )
)
);
aa = Associative Array(Column(dt, "Col1"), Column(dt, "Col2"));
json = As JSON Expr(aa);Cela ressemblerait à ceci:
"{\!" test \! ": null, \!" test1 \! ": null}"
et si vous l'enregistrez avec Save Text File ("c: \ temp \ test.json", json), il supprimera ces guillemets échappés JMP {"test": null, "test1": null}
Re: Enregistrer une table avec des valeurs numériques vides en tant que JSON entraîne une primitive JSON non valide?Bon à savoir pour les cas où j'ai effectivement deux colonnes, dans mon cas particulier, j'ai cependant beaucoup de colonnes.
Je viens de changer la colonne en Caractère et s'il n'y a pas de numéro, je mets "NA", et je traite cela en dehors de JSL plus tard.