如何在Socrata SODA 2 API调用中逃避&符号?

时间:2016-09-25 18:45:41

标签: socrata soda

我正在使用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'

     
    

{       “错误”:是的,       “消息”:“无法识别的论点[NON-NEGL.MANSLAUGHTE']”     }

  

在我看来,字符串中的&符号正在逃避。

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

  

{     “错误”:是的,     “message”:“错误:函数#LIKE未在SoQL中定义:错误:函数#LIKE未在SoQL中定义。”   }

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

总而言之,我如何查询凶杀案?有没有办法让 (a)正确地逃避&符号,或者(b)搜索子串?

感谢您对这两项要求提供任何帮助。

1 个答案:

答案 0 :(得分:2)

您更正了,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'。完整网址,完全转义:

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

使用2.1端点,您还可以使用LIKE进行SQL样式的子字符串搜索,或使用$q来使用全文搜索索引。