- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Posted 04-07-2022 07:06 AM
(884 views)
JSON
{ "totalCount": 2, "facets": {}, "content": [ [ { "name": "customer_ID", "value": "1" }, { "name": "customer_name", "value": "John" } ] ] }
How to get the values under "name" using a json map.
i.e i need to get the out as "customer_ID" and "customer_name" using a json map.
Below is my json map.
{ "DATASETS": [ { "DSNAME": "customers", "TABLEPATH": "/root/content", "VARIABLES": [ { "NAME": "name", "TYPE": "CHARACTER", "PATH": "/root/content/name" }, { "NAME": "name", "TYPE": "CHARACTER", "PATH": "/root/content/name" }, { "NAME": "value", "TYPE": "CHARACTER", "PATH": "/root/content/value" }, { "NAME": "value", "TYPE": "CHARACTER", "PATH": "/root/content/value" } ] } ] }
The output i am getting is only "customer_name".
Please help.
Thanks.
2 REPLIES 2
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I just cut out the duplication in the map file that you supplied.
Map file named ./sasuser/json.map
{ "DATASETS": [ { "DSNAME": "customers", "TABLEPATH": "/root/content", "VARIABLES": [ { "NAME": "name", "TYPE": "CHARACTER", "PATH": "/root/content/name" }, { "NAME": "value", "TYPE": "CHARACTER", "PATH": "/root/content/value" } ] } ] }
Existing JSON file (named ./sasuser/json.sas):
{ "totalCount": 2, "facets": {}, "content": [ [ { "name": "customer_ID", "value": "1" }, { "name": "customer_name", "value": "John" } ] ] }
SAS code run:
filename mapRef './sasuser/json.map';
libname x json './sasuser/json.sas' map=mapRef;
proc print data=x.customers; run;
OUTPUT:
Obs name value 1 customer_ID 1 2 customer_name John
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
I answered this on StackOverflow (and Reddit! Hitting all of the channels!) where it seems that the original poster wants the "name" values to be proper SAS variables. Achievable using what @BillM_SAS suggests, plus a transpose step:
libname j json fileref=test;
proc transpose
data=j.content
out=want;
id name;
var value;
run;
Output:
customer_ customer_
Obs _NAME_ ID name
1 value 1 John
Register for SAS Innovate 2025!! The premier event for SAS users, May 6-9 in Orlando FL. Sign up now for the best deals!