将具有空数值的表另存为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}”
如果使用“保存文本文件”(“ c:\ temp \ test.json”,json)保存,它将删除那些JMP转义的引号{“ test”:null,“ test1”:null}
Re:将具有空数值的表另存为JSON会导致无效的JSON原语?很高兴知道我确实有两列的情况,但是在我的特殊情况下,我有很多列。
我只是将列更改为Character,如果没有数字,则输入“ NA”,然后在JSL之外进行处理。