將具有空數值的表另存為JSON會導致無效的JSON原語?如果在這樣的數字列之一中保存具有空值的表,則如下所示:
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( [., .] )
)
)作為JSON文件,結果如下:
[
{
"Col1" : "test",
"Col2" : .
},
{
"Col1" : "test",
"Col2" : .
}
]似乎並非所有人都同意這是有效的JSON語法。 如果我使用Powershell將該文件讀回到JSON,
$json = Get-Content -Path 'C:\Users\myUser\testEmpty.json' -ErrorAction Stop | ConvertFrom-Json
它會出錯:
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
任何想法如何解決這個問題? 使用腳本保存JSON文件時有什麼選擇? 還是唯一的解決方法是確保表中沒有空值?
數據表腳本編寫Re:將具有空數值的表另存為JSON會導致無效的JSON原語?我非常確定,必須將其更改為null值才能成為有效的JSON。
如果只有兩列,則可以嘗試將數據表轉換為關聯數組,然後將其轉換為JSON(注意:關聯數組將不允許重複的鍵。 有效的JSON不會但不確定使用重複的鍵會有多好)
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);看起來像這樣:
“ {\!” test \!“:null,\!” test1 \!“:null}”
並且如果使用Save Text File(“ c:\ temp \ test.json”,json)保存,它將刪除那些JMP轉義的引號{“ test”:null,“ test1”:null}
Re:將具有空數值的表另存為JSON會導致無效的JSON原語?很高興知道我確實有兩列的情況,但是在我的特殊情況下,我有很多列。
我只是將列更改為Character,如果沒有數字,則輸入“ NA”,然後在JSL之外進行處理。