gpt4 book ai didi

json - 将 JSON 序列化为查询字符串的标准化方法?

转载 作者:IT老高 更新时间:2023-10-28 12:45:33 29 4
gpt4 key购买 nike

我正在尝试构建一个 Restful API,我正在努力研究如何将 JSON 数据序列化为 HTTP 查询字符串

在请求中需要传递许多强制和可选参数,例如(表示为下面的 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[-或][服务]=schedule&-limit=5&return=column
  • PHP 使用 http_build_query:-columns[0]=name&-columns[1]=column&-where[-or][customer_id]=1&-where[-或][服务]=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 非常相似。 Perl 使用 complex_to_query 也与它们非常相似。但没有一个看起来完全一样。

最佳答案

URL 编码 (https://en.wikipedia.org/wiki/Percent-encoding) 您的 JSON 文本并将其放入单个查询字符串参数中。例如,如果你想传递 {"val": 1}:

mysite.com/path?json=%7B%22val%22%3A%201%7D

请注意,如果您的 JSON 太长,您将遇到 URL 长度限制问题。在这种情况下,我会将 POST 与正文一起使用(是的,我知道,当您想要获取某些内容时发送 POST 不是“纯粹的”并且不适合REST 范例,但也不是您的领域特定的基于 JSON 的查询语言)。

关于json - 将 JSON 序列化为查询字符串的标准化方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15872658/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com