我正在尝试构建一个宁静的环境,并且正在努力将数据API
序列化为.JSON
HTTP query string
请求中需要传递许多强制和可选参数,例如(表示为下面的 JSON 对象):
{
"-columns" : [
"name",
"column"
],
"-where" : {
"-or" : {
"customer_id" : 1,
"services" : "schedule"
}
},
"-limit" : 5,
"return" : "table"
}
我需要支持各种数量的不同客户端,所以我正在寻找一种标准化的方法来将此 json 对象转换为查询字符串。有没有,它看起来怎么样?
另一种选择是允许用户只在消息正文中传递 json 对象,但我读到我应该避免它(HTTP GET with request body)。
有什么想法吗?
编辑澄清:
列出一些不同的语言如何编码上面给定的 json 对象:
jQuery
使用$.param
:-columns[]=name&-columns[]=column&-where[-or][customer_id]=1&-where[-or][services]=schedule&-limit=5&return=columnPHP
使用http_build_query
:-columns[0]=name&-columns[1]=column&-where[-or][customer_id]=1&-where[-or][services]=schedule&-limit=5&return=columnPerl
使用URI::query_form
:-columns=name&-columns=column&-where=HASH(0x59d6eb8)&-limit=5&return=columnPerl
使用complex_to_query
:-columns:0=name&-columns:1=column&-limit=5&-where.-or.customer_id=1&-where.-or.services=schedule&return=column
jQuery 和 PHP 非常相似。Perl 使用 complex_to_query 也与它们非常相似。但没有一个看起来完全一样。