javascript - 使用 json 模式验证 JSON 失败
问题描述
嗨,我需要使用生成 json 的 API 进行学校分配。
我得到了 $API 我的 json。通过我自己的一些测试,我可以说 json 是正确的。但在 assigement 中说我需要使用 json 模式对其进行验证。我有架构,但我无法让它工作,所以它会检查并验证传入的 json。
如果有人看到问题请告诉我,因为我找不到它。
<?php
//Json gets validated
if(isset($API))
{
?>
<script src="//cdnjs.cloudflare.com/ajax/libs/validate.js/0.13.1/validate.min.js">
var validator = require('validator');
var jsv = require('json-validator');
jsv.validate("<?php echo $API; ?>", "json_schema.json", function(err, messages)) {
if(err)
{
throw err;
}
else
{
$.getJSON("<?php echo $API; ?>", function(data)
{
var items = [];
$.each(data, function(key, val, val2) {
items.push("<li id='" + key + "'>" + val["COL 3"] + "</li>");
items.push("<br>");
});
$("<ul/>", {
"class": "my-new-list",
html: items.join("")
}).appendTo(".datapanel");
});
}
}
</script>
<?php
}
?>
解决方案
将两者都替换<?php echo $API; ?>
为<?php echo str_replace('"', '\\"', $API); ?>
。
更好的是,您可以执行一次此过程,然后回显转义的字符串:
<?php
// Json gets validated
if (isset($API))
{
// escape your JSON string
$escapedAPI = str_replace('"', '\\"', $API);
?>
...
<!-- echo the escaped string -->
<?php echo $escapedAPI; ?>
...
<?php
}
?>
您面临的问题是,当 PHP 在您的 Javascript 中回显 JSON 时,它会产生如下内容:
jsv.validate("[{"COL 3":"(APPLAUSE)"}, ... ]", "json_schema.json", function() { ... })
如您所见,"
来自 Javascript 的 Javascript 与产生无效 Javascript 的“回显”混合在一起。这就是为什么您需要在“回显”您的 JSON 之前转义它们。
推荐阅读
- python - 如何为 tensorflow 服务构建 models.config
- python - 无法从文件夹重命名下载的文件
- c++ - 如何为我的 Vulkan 类创建这个通用数据结构字段?
- wordpress - 在“添加新销售订单”页面执行客户搜索时显示 billing_company
- google-app-engine - GCP 内部负载平衡器
- java - Javassist 不调用超类中定义的方法
- dart - 我可以在渡槽响应控制器中调用任何飞镖函数吗?
- android - 管道:支持的最低 Gradle 版本为 4.10.1。当前版本是 4.4
- c# - 最小化十进制 .csv 文件的文件大小
- excel - 仅当文本不是英文时才谷歌翻译文本