当前位置: 首页 > 面试题库 >

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

刁英朗
2023-03-14
问题内容

我正在尝试建立一个宁静的环境,API并且正在努力将JSON数据序列化到HTTP query string

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

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

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

另一种选择是允许用户仅在消息正文中传递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的查询语言也不是)



 类似资料:
  • 本文向大家介绍C#实现JSON字符串序列化与反序列化的方法,包括了C#实现JSON字符串序列化与反序列化的方法的使用技巧和注意事项,需要的朋友参考一下 C#将对象序列化成JSON字符串 这里主要是使用JavaScriptSerializer来实现序列化操作,这样我们就可以把对象转换成Json格式的字符串,生成的结果如下: 如何将Json字符串转换成对象使用呢? 在实际开发中,经常有可能遇到用JS传

  • 我有课 其中field 如果使用ObjectMapper反序列化此对象 结果是这样的: 添加了转义(\),并且json字段有引号(")。如何正确摆脱这一点并制作单个JSON?像这样:

  • 有没有一种方法可以正确地反序列化以双引号开头和结尾的JSON字符串? 数据以流的形式输入(来自AWS S3对象)。这是流的内容(注意开头和结尾的双引号字符): JsonSerializer似乎没有正确地反序列化它。但是,对于以下内容,其工作原理与预期一致: 以下是片段:

  • 问题内容: 我正在尝试查找有关如何序列化对象以查询字符串格式的信息,但是我所有的搜索都淹没了关于如何采用另一种方法(字符串/表格/任何以JSON格式)的结果。 我有 而且我要 有什么好方法吗?我不介意插件或其他什么-如果我找到的代码不是插件,无论如何我可能都会将其重写为一个… 问题答案: 您想要的: 具体来说,您想要这样: 当给出这样的东西: 将返回此:

  • 问题内容: 我有这个字符串: 我正在反序列化对象: 该对象看起来像: 并尝试创建字典: 但得到。 可能是什么问题? 问题答案: 请参阅mridula的答案,了解为什么您会得到null。但是,如果您想直接将json字符串转换为字典,则可以尝试以下代码段。

  • 我的问题类似于防止GSON序列化JSON字符串,但是那里的解决方案使用GSON库,而我仅限于使用Jackson(fasterxml)。 我有一个实体类,如下所示: 我想用映射的json字符串表示填充body字段,然后将其作为ResponseEntity的一部分发送。如下事物: 预期输出: 实际输出: 我在用 Jackson Core v2.8.2 标记,但这没有帮助,因为我的字段在写入实体时已经从