序列化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 = column
  • PHP使用http_build_query:-columns [0] = name&-columns [1] = column&-where [-or] [customer_id] = 1&-where [-or] [services] = schedule&-limit = 5&return = column
  • Perl使用URI::query_form:-columns = name&-columns = column&-where = HASH(0x59d6eb8)&-limit = 5&return = column
  • Perl使用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

回到顶部