如何转义 Socrata SODA 2 API 调用中的符号?

How do I escape an ampersand in a Socrata SODA 2 API call?

我正在与 NYC crime dataset 打交道,我注意到 offense 凶杀案的类型是 MURDER & NON-NEGL. MANSLAUGHTE。 (是的,那是没有“r”的“误杀”。)但是,当我尝试使用 SODA API 对此进行过滤时,出现错误:

https://data.cityofnewyork.us/resource/hyij-8hr7.json?$where=offense='MURDER & NON-NEGL. MANSLAUGHTE'

{ "error" : true, "message" : "Unrecognized arguments [ NON-NEGL. MANSLAUGHTE']" }

在我看来,字符串中的&符号正在转义。

请注意,我尝试使用 like=‘MURDER’ 命令来避免输入符号,例如查询 https://data.cityofnewyork.us/resource/hyij-8hr7.json?$where=offense like 'MURDER',但这给了我错误

{ "error" : true, "message" : "Error: function #LIKE is not defined in SoQL.: Error: function #LIKE is not defined in SoQL.” }

这一定意味着 NYC 数据集正在使用 SoQL。 v. 2.0 而不是 2.1.

总之,如何查询凶杀案?有没有办法 (a) 正确转义 & 符号,或 (b) 搜索子字符串?

感谢您对这些请求的任何帮助。

你是对的,hyij-8hr7 是该数据集的 SODA 2.0 端点。但是,还存在一个 2.1 端点:https://dev.socrata.com/foundry/data.cityofnewyork.us/e4qk-cpnv

使用 2.1 端点,您可以将 & 号转义为 URL 编码的 %26$where=offense='MURDER %26 NON-NEGL. MANSLAUGHTE'。完全 URL,完全转义:

GET https://data.cityofnewyork.us/resource/e4qk-cpnv.json?$where=offense%3D%27MURDER%20%26%20NON-NEGL.%20MANSLAUGHTE%27

使用 2.1 端点,您还可以 LIKE to do SQL-style substring searches or $q 使用全文搜索索引。