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

2023-11-25

我正在努力建立一个宁静的环境API我正在努力研究如何序列化JSON数据到一个HTTP query string.

请求中需要传递许多强制和可选参数,例如(下面表示为 JSON 对象):

{
   "-columns" : [
      "name",
      "column"
   ],
   "-where" : {
      "-or" : {
         "customer_id" : 1,
         "services" : "schedule"
      }
   },
   "-limit" : 5,
   "return" : "table"
}

我需要支持各种不同数量的客户端,因此我正在寻找一种标准化方法来将此 json 对象转换为查询字符串。有吗?它看起来怎么样?

另一种选择是允许用户仅在消息正文中传递 json 对象,但我读到我应该避免它(带请求正文的 HTTP GET).

有什么想法吗?

编辑以澄清:

列出一些不同语言如何对上面给定的 json 对象进行编码:

  • jQuery using $.param:-columns[]=名称&-columns[]=列&-where[-or][customer_id]=1&-where[-or][服务]=计划&-limit=5&return=列
  • PHP using http_build_query: -columns[0]=名称&-columns[1]=column&-where[-or][customer_id]=1&-where[-or][services]=schedule&-limit=5&return=column
  • Perl using URI::query_form: -columns=名称&-columns=列&-where=HASH(0x59d6eb8)&-limit=5&return=列
  • Perl using complex_to_query: -columns:0=名称&-columns:1=列&-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 的查询语言)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 JSON 序列化为查询字符串的标准化方法? 的相关文章

随机推荐

  • 从 Eloquent 关系中选择特定列

    我的应用程序中有以下模型 User php
  • JAVA_HOME 设置为无效目录 A​​ndroid Studio (Flutter)

    我在我的旧 Mac 上使用 OSX Yosemite 当我安装模拟器并尝试创建运行 Flutter 项目时 我开始收到有关 JDK 17 的错误 我删除了 JDK 17 并安装了 JDK 并将 bash 配置文件中的路径设置为 Librar
  • 向启动时启动的应用程序授予管理员权限而没有 UAC 提示?

    背景 我编写了一个小型 C NET 4 0 应用程序 用于将程序文件中安装的游戏的各种设置与不同计算机上同一游戏的其他副本同步 想想 Chrome 书签同步 但对于这个游戏 同步本身是一件相对简单的事情 处理存储在游戏 Program Fi
  • 如何在 jaxws 中使用 wsimport 生成 equals() 和 hashcode() 方法

    使用我的 WSDL 生成的类wsimport没有equals and hashcode 方法 我如何自定义并生成客户端类以获得equals and hashcode 方法 我不确定是否使用 JAXB 来实现此目的 在 Axis2 0 生成的
  • 如何使用 Newtonsoft 反序列化可以是数组或字典的对象?

    我正在使用一个 API 它返回一个我需要反序列化的 json 对象 我的问题是这些对象的成员之一有时是一个空数组 有时是一个字典 1 2 我想将其反序列化为数组或字典 因为我不关心 ID 我只想要所有对象的列表 这是我反序列化对象的方法 v
  • new然后delete后的内存消耗

    我创建了一个如下所示的示例应用程序 我需要创建 1024 1024 结构 在致电之前new我的应用程序正在消耗一定量的内存 比如 0 3mb 调用 new 运算符后 内存会增加 例如 175mb 拨打电话后delete操作员内存减少 例如
  • 带有上下文路径的 Spring Boot 静态内容

    使用上下文路径时 我在 Spring Boot 中遇到静态内容问题 即 我希望将我的应用程序部署到localhost 8080 appname 当我在没有上下文路径的情况下运行应用程序时 一切正常 Spring Boot 找到并运行我的 h
  • 在 PHP 中的对象上使用 json_encode(无论范围如何)

    我正在尝试将对象列表输出为 json 并且想知道是否有办法使对象可用于json encode 我得到的代码看起来像 related user gt getRelatedUsers echo json encode related 现在 我只
  • 重写静态 iOS 库中的符号

    我正在开发一个链接多个静态库的 iOS 应用程序 挑战在于 这些链接库定义了具有不同实现的相同方法名称 奇怪的是 我没有得到任何duplicate symbol definition错误 但是 毫不奇怪 我最终只能访问该方法的一种实现 更清
  • rake db:create 生成“如果您手动设置字符集,请确保您有匹配的排序规则”错误

    我有一个2 3 8版本的rails项目 当我尝试运行 rake db create 时 出现以下错误 Couldn t create database for encoding gt utf8 username gt root adapte
  • 访问令牌中未包含 Azure AD v2 角色

    我在用着https login microsoftonline com oauth2 v2 0 token使用以下范围对 azure Ad 进行身份验证 authorization code grant offline access ope
  • 使用字符串作为锁对象可以吗?

    我需要基于一组有限的字符串在一个区域中创建一个关键部分 我希望为同一个字符串实例共享锁 有点类似于字符串实习生方法 我正在考虑以下实施 public class Foo private readonly string s private s
  • 手动更新休眠版本

    我有两个类 例如 Foo 和 Bar 使用 Hibernate 3 6 1 Final 和 JPA 2 0 映射为 OneToOne 双向 例如 Entity public class Foo Id private Long id OneT
  • Swift:弹出窗口关闭回调

    那里有两个UIViewController类在我的故事板中 主视图控制器 and 第二个视图控制器 我要展示第二个视图控制器当用户点击名为的按钮时作为弹出窗口显示弹出窗口 MainViewController override func p
  • 什么是 C# 独占或“^”用法? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 谁能用一个很好的例子来解释
  • 编译器在优化代码时在汇编中做了什么?即-O2标志

    因此 当您在编译 C 时添加优化标志时 它的运行速度会更快 但是这是如何工作的呢 有人能解释一下大会上到底发生了什么吗 这意味着您要让编译器在编译时执行额外的工作 分析 这样您就可以在运行时获得一些额外宝贵的 CPU 周期的回报 可能最好用
  • 为什么 Ruby 不使用 Symbol#=~ (正则表达式匹配运算符)?

    在对符号执行正则表达式匹配时 Ruby 不会自动对符号进行字符串化 当您有包含符号的变量并且您忘记在尝试正则表达式匹配之前需要对它们调用 to s 时 这很容易做到 gt gt this gt false gt gt this this g
  • 使用 Selenium 和 Python 将表数据提取到 pandas 数据框中

    所以我使用库 BeautifulSoup 从表中提取数据 代码如下 if soup find table class a keyvalue prodDetTable is not None table parse table soup fi
  • Rust 中是否可以实现递归闭包?

    这是一个非常简单的例子 但我将如何做类似的事情 let fact x u32 match x 0 gt 1 gt x fact x 1 我知道这个具体的例子可以通过迭代轻松完成 但我想知道是否可以在 Rust 中为更复杂的事情 例如遍历树
  • 将 JSON 序列化为查询字符串的标准化方法?

    我正在努力建立一个宁静的环境API我正在努力研究如何序列化JSON数据到一个HTTP query string 请求中需要传递许多强制和可选参数 例如 下面表示为 JSON 对象 columns name column where or c