Das Speichern einer Tabelle mit leeren Zahlenwerten als JSON führt zu einem ungültigen JSON-Grundelement?Wenn Sie eine Tabelle mit leeren Werten in einer der numerischen Spalten wie folgt speichern:
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( [., .] )
)
)Als JSON-Datei führt dies zu folgenden Ergebnissen:
[
{
"Col1" : "test",
"Col2" : .
},
{
"Col1" : "test",
"Col2" : .
}
]Anscheinend sind sich nicht alle einig, dass dies eine gültige JSON-Syntax ist. Wenn ich diese Datei mit Powershell in JSON zurücklese, sagen wir:
$json = Get-Content -Path 'C:\Users\myUser\testEmpty.json' -ErrorAction Stop | ConvertFrom-Json
es wird ein Fehler auftreten:
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
Irgendeine Idee, wie man das behebt? Gibt es Optionen beim Speichern von JSON-Dateien mithilfe von Skripten? Oder besteht die einzige Problemumgehung darin, sicherzustellen, dass die Tabelle keine leeren Werte enthält?
DatentabelleSkriptingBetreff: Das Speichern einer Tabelle mit leeren numerischen Werten als JSON führt zu einem ungültigen JSON-Grundelement?Ich bin mir ziemlich sicher, dass diese in Nullwerte geändert werden müssten, um gültiges JSON zu sein.
Wenn Sie nur zwei Spalten haben, können Sie versuchen, die Daten in ein assoziatives Array und das in JSON zu konvertieren (HINWEIS: Das assoziative Array erlaubt keine doppelten Schlüssel. Gültiges JSON ist sich aber nicht sicher, wie schön es wäre, mit doppelten Schlüsseln zu arbeiten.
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);Das würde so aussehen:
"{\!" test \! ": null, \!" test1 \! ": null}"
und wenn Sie es mit Save Text File ("c: \ temp \ test.json", json) speichern, werden diese JMP-Escape-Anführungszeichen entfernt {"test": null, "test1": null}
Betreff: Das Speichern einer Tabelle mit leeren numerischen Werten als JSON führt zu einem ungültigen JSON-Grundelement?Gut zu wissen für Fälle, in denen ich tatsächlich zwei Spalten habe, in meinem speziellen Fall habe ich jedoch viele Spalten.
Ich habe gerade die Spalte in Character geändert und wenn es keine Nummer gibt, setze ich "NA" und kümmere mich später außerhalb von JSL darum.