Se ha producido un error al procesar la plantilla.
Java method "com.liferay.portal.json.JSONFactoryImpl.convertXMLtoJSONMLObject(String)" threw an exception when invoked on com.liferay.portal.json.JSONFactoryImpl object "com.liferay.portal.json.JSONFactoryImpl@598fc049"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign jsonIframe = jsonFactoryUtil...  [in template "13333257#13333299#5521147" at line 123, column 49]
----
1<article> 
2	<div class="p-container"> 
3		<div class="row"> 
4			<div class="col-12 col-md-10 mj-content"> 
5				<#if (introContent.getData())?has_content> 
6					<p class="mj-summary">${introContent.getData()}</p> 
7				</#if> 
8			</div> 
9		</div> 
10 
11		<div class="row mb-0 mb-md-6"> 
12			<#assign hasImage = (imagesContent.mainImage.imageContent.getData())?has_content /> 
13			<#assign internalLinkFirst = linksContent.linksInternal.getSiblings()?first/> 
14			<#assign hasInternalLinks = internalLinkFirst.titleInternal.getData()?has_content && internalLinkFirst.linkInternal.getFriendlyUrl()?has_content /> 
15			<#assign externalLinkFirst = linksContent.linksExternal.getSiblings()?first/> 
16			<#assign hasExternalLinks = externalLinkFirst.titleExternal.getData()?has_content && externalLinkFirst.linkExternal.getData()?has_content /> 
17			<#assign documentFirst = documentsContent.documentContent.getSiblings()?first/> 
18			<#assign hasDocuments = documentFirst.fileDocument.getData()?has_content && documentFirst.titleFile.getData()?has_content/> 
19			<#assign cardFirst = cardsContent.cardContent.getSiblings()?first/> 
20			<#assign hasCard = cardFirst.titleCard.getData()?has_content/> 
21			<#assign downloadFirst = documentsContent.downloadContent.getSiblings()?first/> 
22			<#assign hasDownload = downloadFirst.titleDownload.getData()?has_content/> 
23			<#assign paragraphFirst = paragraphs.getSiblings()?first/> 
24			<#assign hasParagraphs = paragraphFirst.titleParagraph.getData()?has_content || paragraphFirst.descriptionContent.getData()?has_content /> 
25			<#assign hasVideo = videoyt.getData()?? && videoyt.getData()?has_content /> 
26		 
27			<#if hasImage> 
28				<div class="col-12 col-md-3 mb-5"> 
29					<#--imagen principal --> 
30					<figure> 
31						<img alt="${htmlUtil.escapeAttribute(imagesContent.mainImage.imageContent.getAttribute('alt'))}" 
32							data-fileentryid="${imagesContent.mainImage.imageContent.getAttribute('fileEntryId')}" 
33							src="${imagesContent.mainImage.imageContent.getData()}"/> 
34						<#if (imagesContent.mainImage.captionImage.getData())?has_content> 
35							<figcaption class="mj-figcaption">${imagesContent.mainImage.captionImage.getData()}</figcaption> 
36						</#if> 
37					</figure> 
38				</div> 
39			</#if> 
40 
41			<#if hasParagraphs || hasVideo > 
42				<div class="col-12 col-md-${hasImage?then('7','10')}"> 
43					<#if hasParagraphs > 
44						<#list paragraphs.getSiblings() as cur_paragraph> 
45							<#if getterUtil.getBoolean(cur_paragraph.collapsible.getData())> 
46							<#--  ${languageUtil.get(locale, "yes collapsible")}  --> 
47							<div class="mj-accordion__item"> 
48								<div class="mj-accordion__heading" id="heading_${cur_paragraph?index}" data-toggle="collapse" data-target="#collapse_${cur_paragraph?index}" aria-expanded="${(cur_paragraph?index==0)?then('true', 'false')}" aria-controls="collapse_${cur_paragraph?index}" role="button"> 
49									<div class="mj-accordion__title"> 
50									<#if (cur_paragraph.titleParagraph.getData())?has_content> 
51										<h2 class="mj-headline4 mb-0">${cur_paragraph.titleParagraph.getData()}</h2> 
52									</#if> 
53									</div> 
54								</div> 
55								<div class="mj-accordion__body collapse ${(cur_paragraph?index==0)?then('show', '')}" id="collapse_${cur_paragraph?index}" aria-labelledby="heading_${cur_paragraph?index}"> 
56									<#if (cur_paragraph.descriptionContent.getData())?has_content> 
57										<#if cur_paragraph.oneColumn.getData()?? && getterUtil.getBoolean(cur_paragraph.oneColumn.getData())> 
58											<#assign columnClass = "" /> 
59										<#else> 
60											<#assign columnClass = "mj-two-columns " /> 
61										</#if> 
62 
63										<div class="${columnClass}mb-20 mj-content"> 
64											${cur_paragraph.descriptionContent.getData()} 
65										</div> 
66									</#if> 
67 
68									<#if cur_paragraph.subparagraphs.getSiblings()?has_content> 
69										<#list cur_paragraph.subparagraphs.getSiblings() as cur_subparagraphs> 
70											<#if (cur_subparagraphs.titleSubparagraph.getData())?has_content> 
71												<h3 class="mj-headline5">${cur_subparagraphs.titleSubparagraph.getData()}</h3> 
72											</#if> 
73 
74											<#if (cur_subparagraphs.textSubparagraph.getData())?has_content> 
75												<div class="${columnClass}mb-20 mj-content"> 
76													${cur_subparagraphs.textSubparagraph.getData()} 
77												</div> 
78											</#if> 
79										</#list> 
80									</#if> 
81									 
82								</div> 
83							</div> 
84 
85							<#else> 
86								<#--  ${languageUtil.get(locale, "no collapsible")}  --> 
87							 
88								<div class="mb-50"> 
89									<#if (cur_paragraph.titleParagraph.getData())?has_content> 
90										<h2 class="mj-headline4">${cur_paragraph.titleParagraph.getData()}</h2> 
91									</#if> 
92									<#if (cur_paragraph.descriptionContent.getData())?has_content> 
93										<#if cur_paragraph.oneColumn.getData()?? && getterUtil.getBoolean(cur_paragraph.oneColumn.getData())> 
94											<#assign columnClass = "" /> 
95										<#else> 
96											<#assign columnClass = "mj-two-columns " /> 
97										</#if> 
98 
99										<div class="${columnClass}mb-20 mj-content"> 
100											${cur_paragraph.descriptionContent.getData()} 
101										</div> 
102									</#if> 
103									<#if cur_paragraph.subparagraphs.getSiblings()?has_content> 
104										<#list cur_paragraph.subparagraphs.getSiblings() as cur_subparagraphs> 
105											<#if (cur_subparagraphs.titleSubparagraph.getData())??> 
106												<h3 class="mj-headline5">${cur_subparagraphs.titleSubparagraph.getData()}</h3> 
107											</#if> 
108 
109											<#if (cur_subparagraphs.textSubparagraph.getData())??> 
110												<div class="${columnClass}mb-20 mj-content"> 
111													${cur_subparagraphs.textSubparagraph.getData()} 
112												</div> 
113											</#if> 
114										</#list> 
115									</#if> 
116								</div> 
117							</#if> 
118						</#list> 
119					</#if> 
120					<#if hasVideo> 
121						<#assign documentJson = jsonFactoryUtil.createJSONObject(videoyt.data) /> 
122						<#-- convertimos la etiqueta iframe en json  --> 
123						<#assign jsonIframe = jsonFactoryUtil.createJSONObject(jsonFactoryUtil.convertXMLtoJSONMLObject(documentJson.html)) /> 
124						<#-- leemos el campo src y lo modificamos con nocookie  --> 
125						<#assign iframeSrc = (jsonIframe.src)?replace("youtube","youtube-nocookie") /> 
126 
127						<div class="embed-responsive embed-responsive-16by9"> 
128							<iframe title="<@liferay.language key='video' /> ${documentJson.title}" type="text/html" src="${iframeSrc}" frameborder="0" allowfullscreen></iframe> 
129						</div> 
130					</#if> 
131				</div> 
132			</#if> 
133 
134			<#if hasInternalLinks || hasExternalLinks || hasDocuments> 
135				<div class="col-12 col-md-2"> 
136					<aside class="mj-aside--border"> 
137						<#-- enlaces, agrupados tanto internos como externos --> 
138						<#if hasInternalLinks || hasExternalLinks> 
139							<div class="mj-aside__links-block"> 
140								<h2 class="mj-label"><@liferay.language key="links" /></h2> 
141								<ul class="mj-aside__list"> 
142									<#-- enlaces internos --> 
143									<#list linksContent.linksInternal.getSiblings() as cur_link> 
144										<#if (cur_link.titleInternal.getData())?has_content> 
145											<li class="mj-aside__list__item"> 
146												<a class="mj-read-more" href="${cur_link.linkInternal.getFriendlyUrl()}" target="_self">${cur_link.titleInternal.getData()}</a> 
147											</li> 
148										</#if> 
149									</#list> 
150									<#-- enlaces externos --> 
151									<#list linksContent.linksExternal.getSiblings() as cur_link> 
152										<#if (cur_link.titleExternal.getData())?has_content> 
153											<li class="mj-aside__list__item"> 
154												<a class="mj-read-more" href="${cur_link.linkExternal.getData()}" target="_blank" aria-label="<@liferay.language key='opens-new-window' /> ${cur_link.titleExternal.getData()}" title="<@liferay.language key='opens-new-window' />">${cur_link.titleExternal.getData()}</a> 
155											</li> 
156										</#if> 
157									</#list> 
158								</ul> 
159							</div> 
160						</#if> 
161 
162						<#-- documentos adjuntos --> 
163						<#if hasDocuments> 
164							<div class="mj-aside__attachment-block"> 
165								<h2 class="mj-label"><@liferay.language key="attachments" /></h2> 
166								<ul class="mj-aside__list"> 
167									<#list documentsContent.documentContent.getSiblings() as cur_document> 
168										<#if (cur_document.fileDocument.getData())?has_content && (cur_document.titleFile.getData())?has_content> 
169											<li class="mj-aside__list__item"> 
170												<p>${cur_document.titleFile.getData()}</p> 
171												<a class="mj-link-download" href="${cur_document.fileDocument.getData()}" download aria-label="<@liferay.language key='download' /> ${cur_document.titleFile.getData()}"> 
172													${languageUtil.format(locale, "download-x", "", false)} 
173												</a> 
174											</li> 
175										</#if> 
176									</#list> 
177								</ul> 
178							</div> 
179						</#if> 
180					</aside> 
181				</div> 
182			</#if> 
183		</div> 
184 
185		<#if (imagesContent.imagesCarrusel.imageCarrusel.getSiblings())?has_content && (imagesContent.imagesCarrusel.imageCarrusel.getData())?has_content > 
186		<div class="mj-content__carousel m-0 mb-8"> 
187			<div class="js-carousel" data-options-slider="new-detail"> 
188				<#list imagesContent.imagesCarrusel.imageCarrusel.getSiblings() as cur_img> 
189					<#if cur_img.getData() != "" > 
190						<figure> 
191							<#assign pictureAttributesKeyValue = { "class": "mj-slider__pic"} /> 
192							<#assign cur_imgAltText = htmlUtil.escape(cur_img.getAttribute("alt")) /> 
193							<#assign imgAttributesKeyValue = { "class": "mj-slider__img", "alt": cur_imgAltText } /> 
194							<#assign imgHtml = customAmImageUtil.createAMImageByFileEntryId(cur_img.getAttribute("fileEntryId"),600,pictureAttributesKeyValue,imgAttributesKeyValue)/> 
195							${imgHtml} 
196							<figcaption class="mj-figcaption">${htmlUtil.escapeAttribute(cur_img.getAttribute('alt'))?truncate_c(90)}</figcaption> 
197						</figure> 
198					</#if> 
199				</#list> 
200			</div> 
201		</div> 
202		</#if> 
203 
204		<#-- Enlaces destacados --> 
205		<#if hasCard> 
206		<div class="mj-content__enlaces-destacados mb-8"> 
207			<#list cardsContent.cardContent.getSiblings() as cur_card> 
208				<#if (cur_card.titleCard.getData())?? && cardsContent.cardContent.linkCard??> 
209					<a data-senna-off="true" href="${cur_card.linkCard.getFriendlyUrl()}"> 
210						<div class="mj-box__rounded"> 
211							<div class="mj-box__rounded--text">${cur_card.titleCard.getData()}</div> 
212							<span class="fj-solid fj-fl-der mj-btn-rounded"></span> 
213						</div> 
214					</a> 
215				</#if> 
216			</#list> 
217		</div> 
218		</#if> 
219 
220		<#-- Descargas --> 
221		<#if hasDownload> 
222		<div class="mj-section__block"> 
223			<h2 class="mj-section__block__title"><@liferay.language key="downloads" /></h2> 
224			<#if documentsContent.downloadContent.getSiblings()?has_content> 
225				<div class="mj-section__block__content mb-8"> 
226					<ul class="mj-links-list"> 
227					<#list documentsContent.downloadContent.getSiblings() as cur_dowload> 
228						<#if (cur_dowload.titleDownload.getData())?has_content && (cur_dowload.fileDownload.getData())?has_content> 
229							<li> 
230								<div> 
231									<p class="mj-links-list__text">${cur_dowload.titleDownload.getData()?truncate_w(80)}</p> 
232								</div> 
233								<a class="mj-link-download" href="${cur_dowload.fileDownload.getData()}" download aria-label="<@liferay.language key='download' /> ${cur_dowload.titleDownload.getData()}"><@liferay.language key="download"/></a> 
234							</li> 
235						</#if> 
236					</#list> 
237					</ul> 
238				</div> 
239			</#if> 
240		</div> 
241		</#if> 
242 
243	</div> 
244</article>