Google Apps Script JSON 无法在客户端解析



我在Apps Script中解析JSON数据时遇到问题。在我的客户端HTML上,我循环使用我提取的数据来创建几个div。我有一个";toggleVideo";在我的客户端上的功能;数据";属性存储。

HTML:

<? for (let i =0; i<videos.length; i++){ ?>
<div onClick="toggleVideo(this)" data='<?!= JSON.stringify(videos[i])  ?>' class="col video-preview-container">
<div class="video-preview-image" style="background-image: url(<?= videos[i].preview_url ?>);"></div>
<div class="video-preview-title-speaker-container">
<div class="video-preview-title"><?= videos[i].title ?></div>
<div class="video-preview-speaker"><?= videos[i].speaker ?></div>
</div>
</div>
<? } ?>

toggleVideo函数获取存储在div:中的数据

function toggleVideo(param) {
var videoData = param.getAttribute("data");
var videoDataParsed = `'${videoData}'`;
videoDataParsed.replace(/\n/g, "\n")
.replace(/\'/g, "\'")
.replace(/\"/g, '\"')
.replace(/\&/g, "\&")
.replace(/\r/g, "\r")
.replace(/\t/g, "\t")
.replace(/\b/g, "\b")
.replace(/\f/g, "\f");
console.log(JSON.parse(videoDataParsed));
}

当我在数据未解析时对其进行console.log时,根本没有问题,它会向我返回一个包含数据的字符串。我尝试在浏览器控制台中使用JSON.parse((,在{}之前和之后添加",它解析得非常好,并返回对象。但当我添加时,我试图在toggleVideo函数中解析它,它返回以下错误:

VM38:1未捕获语法错误:JSON中位置0处的意外标记位于JSON.parse((在toggleVideo(userCodeAppPanel:30(在HTMLDivElement.onclick(userCodeAppPanel:1(

我已经尝试添加替换(/\…等(来消除任何不可见的字符,但它仍然不起作用。有人知道可能是什么问题吗?

您得到的错误意味着JSON.parse()不喜欢它看到的数据类型,这意味着您可能没有传递表示正确JSON对象的字符串。

您的问题来自以下行:

var videoDataParsed = `'${videoData}'`;

您试图在此处将对象转换为字符串,但这无法正确转换,例如,它无法正确处理引号"

如果你有一个对象,你想用以下内容替换它:

var videoDataParsed = JSON.stringify(videoData);

但是看起来您已经有了一个字符串,所以您的额外转换只是违反了JSON格式。所以,如果你只是删除有问题的行,你会没事的。

相关内容

最新更新