JSON-LD字符串需要转义吗?

11

JSON-LD内容中的字符串值是否需要转义?例如,Google建议采用以下方法来为站点搜索提供提示:

<script type="application/ld+json">
{
   "@context": "http://schema.org",
   "@type": "WebSite",
   "url": "https://www.example-petstore.com/",
   "potentialAction": {
     "@type": "SearchAction",
     "target": "https://query.example-petstore.com/search?q={search_term_string}",
     "query-input": "required name=search_term_string"
   }
}
</script>

但如果我的网站搜索URL包含多个查询参数怎么办?对于target的值中的字符应该被转义吗?例如:

"target": "https://query.example-petstore.com/search?foo=bar\u0026q={search_term_string}",

同样的问题也适用于在 JSON-LD 标记中标记多个常见的 schema.org 类型。例如,在组织(Organization) -> sameAs 中标记 Google+ 社交资料链接:如果我的组织资料是

https://plus.google.com/+BeardsAreSweet

那应该表示为:

"sameAs": ["https://plus.google.com/+BeardsAreSweet"]
或者
"sameAs": ["https://plus.google.com/\u002bBeardsAreSweet"]

更重要的是,这真的有关紧要吗?

2个回答

1
当URL作为JSON对象的一部分时,无需对其进行转义。有效的URL字符串也是有效的JSON字符串。JSON字符串可以包含以下内容:

任何UNICODE字符,但不包括\、"或控制字符

http://json.org


2
我主要关心的不是 JSON 中允许什么,而是字符串将如何被解释。例如,在“sameAs”示例中,谷歌是否会同等地解释这两个字符串?当解码时,它们都表示相同的值,但在评估之前它们是否被解码?我在规范中没有看到任何相关内容。 - nebulous
3
问题仍未得到解答!我也想知道:当LD-JSON中的参数应该具有值https://example.com/search?q=abc&filter=true时,我使用转义版本https://example.com/search?q=abc&amp;filter=true是否可以?请帮忙。 - basZero

0
在我的经验中,RTL字符(特别是查询字符串中的波斯字母)可能会对Google造成问题,因此它们必须被编码在一个LD+JSON中,以便被Google消化。
CJK字符如果不编码也没问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接