JSONファイルからSASのテーブルにデータを取得しようとしています。残念ながら、SAS JSONエンジンを使用することはできません。 これまでのところ、ほとんどすべてのデータがテーブルに格納されています。私はちょうどいくつかの値がありません。SAS JSON libnameエンジンを使用しないでJSONファイルを読み取る
私のJSONファイルは次のようになります。私のSASコードは次のようになります
{
"eventsLimited":false,
"events":[
{
"_id":"1",
"userId":"1",
"timestamp":"2017-05-07T21:37:39.037Z",
"detailedEvents":[
{
"eventType":"taskChanged",
"taskId":"111",
"changedProperties":[
{
"property":"totalSecondsSpent",
"oldValue":0,
"newValue":3600
},
{
"property":"totalSecondsEstimate",
"oldValue":0,
"newValue":144000
}
]
}
]
},
{
"_id":"2",
"userId":"1",
"timestamp":"2017-05-07T22:31:30.037Z",
"detailedEvents":[
{
"eventType":"taskChanged",
"taskId":"111",
"changedProperties":[
{
"property":"totalSecondsSpent",
"oldValue":3600,
"newValue":5400
}
]
}
]
}
]
}
:
:data iHave;
infile 'C:\Users\MyUser\Desktop\MyJSONFile.txt' recfm=n dlm='{}[],';
input value : $200. @@;
if value in: ('"count"' '"calls"') then
delete;
run;
libname iTest 'C:\Users\MyUser\Desktop';
data iTest.iTemp;
set iHave;
length name v $ 100;
if value =: '"_id"' then
n+1;
name=scan(value,2,'"','m');
v=scan(value,-2,'"','m');
drop value;
run;
これは私にこのような出力が得られます
これまでのところとても良いです。配列内の各オブジェクトに対して、カウンタ(n)は1だけインクリメントされ、キーと値は2つの異なる列に表示されます。
私の問題は、私がchangedProperties配列の内側にあるものを取得しないということです。 'oldValue'キーと 'newValue'キーの2つの値は私の出力には表示されません。 たとえば、最初のnewValueは 'v'列の3600でなければなりません。
私のコードを修正する方法を知っている人はいますか? 問題は、数字が括弧内に表示されず、スキャンで括弧内の値で検索されるということです。
/クリス・
パーフェクト!完璧な意味合いを持つ。それは今働いている!あなたは私の問題を解決しました。どうもありがとうございます – crellee
ようこそ。スキャン機能の第2引数は間違っていました。今すぐ固定 – user2877959
ああ、そうです。私はコードをコピーしませんでした。なぜなら、あなたはそれをとてもうまく説明したからです。 – crellee