序列化JSON以查询字符串的标准化方法?
我正在尝试建立一个宁静的环境,API
并且正在努力将JSON
数据序列化到HTTP query string
。
在请求中需要传递许多强制性和可选参数,例如(以下表示为JSON对象):
{ "-columns" : [
"name",
"column"
],
"-where" : {
"-or" : {
"customer_id" : 1,
"services" : "schedule"
}
},
"-limit" : 5,
"return" : "table"
}
我需要支持各种不同的客户端,因此我正在寻找一种标准化的方法来将此json对象转换为查询字符串。有一个,看起来怎么样?
另一种选择是允许用户仅在消息正文中传递json对象,但我读到我应该避免使用它。
有什么想法吗?
在上面列出一些不同的语言如何编码给定的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非常相似。使用complex_to_query的Perl也与它们非常相似。但是没有一个看起来完全一样。
回答:
对您的JSON文本进行URL编码(https://en.wikipedia.org/wiki/Percent-
encoding),并将其放入单个查询字符串参数中。例如,如果您想通过{"val": 1}
:
mysite.com/path?json=%7B%22val%22%3A%201%7D
请注意,如果您的JSON太长,则会遇到URL长度限制问题。在这种情况下,我将使用POST
主体(是的,我知道,POST
当您要获取某些内容时发送的消息不是“纯”的,并且不太适合REST范例,但是您的基于域的特定于JSON的查询语言也不是)
。
以上是 序列化JSON以查询字符串的标准化方法? 的全部内容, 来源链接: utcz.com/qa/401062.html