Parse ASC JSON payload
<html> | |
<head> | |
<style> | |
body, a, input {font-family:sans-serif;} | |
</style> | |
</head> | |
<body style="font-family:sans-serif"> | |
%%=now()=%% | |
<h1>JSON Parse with GTL</h1> | |
%%[ | |
/* Sample JSON payload: https://gist.github.com/wvpv/4550507df4714f9f81fb6da843ba4162 */ | |
var @json | |
set @json = AttributeValue("json") | |
if not empty(@json) then | |
]%% | |
{{.dataobject JsonVar type=variable source=@json maxrows=20}} | |
{{.data}} | |
{"target":"@json"} | |
{{/data}} | |
{{/dataobject}} | |
{{#each JsonVar}} | |
<br><a href="%%=RedirectTo(TreatAsContent('{{url}}'))=%%">{{sku}}</a> - <a href="%%=RedirectTo(TreatAsContent('{{url}}'))=%%">{{name}}</a> | |
{{/each}} | |
%%[ | |
else | |
outputline(concat("<br>no JSON found")) | |
endif | |
]%% | |
<h1>JSON Parse with SSJS</h1> | |
<script runat="server"> | |
Platform.Load("Core","1.1.1"); | |
var json = Attribute.GetValue('json'); | |
var jsonObj = Platform.Function.ParseJSON(json); | |
if (jsonObj.length > 0) { | |
for (var i = 0; i < jsonObj.length; i++ ) { | |
var item = jsonObj[i]; | |
Platform.Variable.SetValue("@sku",item['sku']); | |
Platform.Variable.SetValue("@name",item['name']); | |
Platform.Variable.SetValue("@url",item['url']); | |
</script> | |
<br><a href="%%=redirectto(@url)=%%">%%=v(@sku)=%%</a> - <a href="%%=redirectto(@url)=%%">%%=v(@name)=%%</a> | |
<script runat="server"> | |
} | |
} else { | |
Write("no products found") | |
} | |
</script> | |
<br><br><br><a href="%%profile_center_url%%">Profile/Preference Center</a> | |
<br><a href="%%subscription_center_url%%">Subscription Center</a> | |
<br><a href="%%unsub_center_url%%">One-Click Unsubscribe</a> | |
<p>This email was sent by: | |
<b>%%Member_Busname%%</b> | |
<br>%%Member_Addr%%, %%Member_City%%, %%Member_State%% %%Member_PostalCode%% %%Member_Country%%</p> | |
<custom name="opencounter" type="tracking"> | |
</body> | |
</html> |
This comment has been minimized.
This comment has been minimized.
You'll need to escape the JSON data in your API call as a string:
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
I could use some help with this please! I used the ssjs way in the past and it worked like a charm. For a new email, the client is now nesting data. I am struggling to get the nesting to work. I would really appreciate any help getting the nested data to populate.
an example data piece looks like this:
{
"offerIdMap": {
"O-24660":{
"qty":"2","displayName":"Basic kit","price":"$99","type":"PRODUCTBASIC"
}
},
"coupons":[]
}
Thanks for any help and insights you could provide!