using System.Text.RegularExpressions;
using System.Text.Json.Serialization;
namespace ObjectToJSONConversion
public static void Main()
window.digitalData.page = {};
window.digitalData.page.pageInfo = {};
<!-- Google Tag Manager -->
<script>(function (w, d, s, l, i) {
new Date().getTime(), event: 'gtm.js'
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';
'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-K4QMLG');
<!-- End Google Tag Manager -->
<meta name=""viewport"" content=""width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"">
<meta http-equiv=""X-UA-Compatible"" content=""ie=edge"">
<title>Ticketmaster Sign In</title>
<!-- Google Tag Manager (noscript) -->
<iframe src=""https://www.googletagmanager.com/ns.html?id=GTM-K4QMLG""
height=""0"" width=""0"" style=""display:none;visibility:hidden"">
<!-- End Google Tag Manager (noscript) -->
<script src='https://epsf.ticketmaster.com/eps-mgr' async></script>
<form name=""frmGlobalNudetect""> <input type=""hidden"" name=""nds-pmd""/> </form> <script>!function(){!function(n,e,i,o,a,t,d,s){(s=n.ndsapi||(n.ndsapi={})).config={q:[],ready:function(n){this.q.push(n)}},t=e.createElement(i),d=e.getElementsByTagName(i)[0],t.src=o,d.parentNode.insertBefore(t,d),t.onload=function(){s.load(o)}}(window,document,""script"",""https://api-ticketmaster.nd.nudatasecurity.com/2.2/w/w-481390/sync/js/"");var n=window.ndsapi;n.config.ready((function(){n.setSessionIdFromCookie(""ma.SID"")}))}()</script>
<script>window.pageContext = {""facebookAppId"":""1814206228812281"",""clientId"":""3dc391f24d2d.web.raiders-raiders.us"",""placementId"":""homepage"",""_links"":{""resetPassword"":{""source"":""https://auth.ticketmaster.com/archtics-consolidate/json/reset-password"",""responseType"":""JSON"",""getFromStorage"":[]},""signIn"":{""source"":""https://auth.ticketmaster.com/archtics-consolidate/json/sign-in"",""responseType"":""JSON"",""getFromStorage"":[]},""branding"":{""source"":""https://auth.ticketmaster.com/archtics-consolidate/raiders/website/en-us/branding.json"",""responseType"":""JSON"",""getFromStorage"":[]},""signUp"":{""source"":""https://auth.ticketmaster.com/archtics-consolidate/json/sign-up"",""responseType"":""JSON"",""getFromStorage"":[]}},""epsScriptUrl"":""https://epsf.ticketmaster.com/eps-mgr"",""integratorId"":""nam"",""siteToken"":""tm-us"",""resumePath"":""/as/8is3X/resume/as/authorization.ping"",""lang"":""en-us"",""visualPresets"":""raiders""};</script>
<script src=""/archtics-consolidate/assets/2.1174365067cdcb5dc206.js""></script><script src=""/archtics-consolidate/assets/4.8044bc48840661275219.js""></script><script src=""/archtics-consolidate/assets/standAlone.d06f73224c774153a91e.js""></script></body>
var extension = new ParseHtmlExtension(html);
var jsonString = extension.toJsonString();
TicketMasterResponse response = JsonSerializer.Deserialize<TicketMasterResponse>(jsonString);
Console.WriteLine(JsonSerializer.Serialize(response));
public class ParseHtmlExtension
public ParseHtmlExtension(string html)
public string toJsonString()
var htmlDoc = new HtmlDocument();
var nodes = htmlDoc.DocumentNode.SelectNodes("//script");
foreach (var node in nodes)
if (node.InnerHtml.Contains("window.pageContext"))
json = Regex.Replace(node.InnerHtml, @";$|window.pageContext(\s+)=(\s+)", "");
if (json.Length > 0) return json;
public class TicketMasterResponse
[JsonPropertyName("facebookAppId")]
public string FacebookAppId { get; set; }
[JsonPropertyName("clientId")]
public string ClientId { get; set; }
[JsonPropertyName("placementId")]
public string PlacementId { get; set; }
[JsonPropertyName("_links")]
public TicketMasterResponseLinks Links { get; set; }
[JsonPropertyName("epsScriptUrl")]
public string EpsScriptUrl { get; set; }
[JsonPropertyName("integratorId")]
public string IntegratorId { get; set; }
[JsonPropertyName("siteToken")]
public string SiteToken { get; set; }
[JsonPropertyName("resumePath")]
public string ResumePath { get; set; }
[JsonPropertyName("lang")]
public string Lang { get; set; }
[JsonPropertyName("visualPresets")]
public string VisualPresets { get; set; }
public class TicketMasterResponseLinks
[JsonPropertyName("resetPassword")]
public InnerShape TicketMasterResponseLinksResetPassword { get; set; }
[JsonPropertyName("signIn")]
public InnerShape SignIn { get; set; }
[JsonPropertyName("branding")]
public InnerShape Branding { get; set; }
[JsonPropertyName("signUp")]
public InnerShape SignUp { get; set; }
[JsonPropertyName("source")]
public string Source { get; set; }
[JsonPropertyName("responseType")]
public string ResponseType { get; set; }
[JsonPropertyName("getFromStorage")]
public string[] GetFromStorage { get; set; }