在SAS中解析JSON

  • 本文关键字:JSON SAS json sas
  • 更新时间 :
  • 英文 :


有人知道如何将以下JSON转换为SAS中的表格式吗?提前感谢任何帮助!

JSON>
{
"totalCount": 2,
"facets": {},
"content": [
[
{
"name": "customer_ID",
"value": "1"
},
{
"name": "customer_name",
"value": "John"
}
],
[
{
"name": "customer_ID",
"value": "2"
},
{
"name": "customer_name",
"value": "Jennifer"
}
]
]
}

期望输出值

tbody> <<tr>2
customer_IDcustomer_name
1约翰
詹妮弗

从您所在的位置,您有一个非常简单的步骤来转换为您想要的-PROC TRANSPOSE

filename test "h:temptest.json";
libname test json;
data pre_trans;
set test.content;
if name='customer_ID' then row+1;
run;
proc transpose data=pre_trans out=want;
by row;
id name;
var value;
run;

您也可以直接在data步骤中执行此操作;两种方法都有优点。

data want;
set test.content;
retain customer_ID customer_name;
if name='customer_ID' then customer_ID=input(value,best.);
else if name='customer_name' then do;
customer_name = value;
output;
end;
run;

这个数据步骤在上面的例子中工作得很好——proc transpose在更复杂的例子中工作得更好,因为你只需要硬编码一个值。

我怀疑你可以用一个合适的JSON映射更直接地做到这一点,但我通常不这样做——对我来说,把它放入一个数据集然后从那里使用它更容易。

在这种情况下,SAS被在第二个数组之前没有内容的双数组绊倒了——如果那里有一些(任何)内容,它会更自然地解析。因为SAS没有真正判断您想对Content数组做什么,所以它只是让您对它做任何您想做的事情——这很容易。

最新更新