【问题标题】:how to convert a json data to a url parameter如何将json数据转换为url参数
【发布时间】:2015-07-09 17:39:37
【问题描述】:

我有以下 curl 命令

{"auth": {"tenantName": "demo", "passwordCredentials": {"username": "demo", "password": "password"}}}

由于这被声明为一个主体,因此我们必须将它作为 java 中的 url 参数发送。

那么如何把这个写成url参数呢。

例如,{"username": "demo", "password": "password"} 会变成类似username=demo & password=password

如果我需要,如何转换?

【问题讨论】:

  • 澄清一下,您希望在 Java 环境中进行这种转换?
  • 是的,但我不必为此编写解析器。它必须是硬编码的。这里的要求很具体。

标签: java json url curl data-conversion


【解决方案1】:

您可以使用这种技术使用常规表单进行“平面”(单级)提交:

您可以在 Java 中使用 Apache 的 URIBuilder:

http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/utils/URIBuilder.html

如果你想用 JavaScript 来代替,这里有一个例子:

https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Forms/Sending_forms_through_JavaScript

“手动构建 XMLHttpRequest”部分。

但是您的第一个示例具有“嵌套”结构;也就是说,在 JSON 哈希中存在 JSON 哈希。

这就是嵌套的“auth”和“passwordCredentials”键的问题。它们不再可以直接翻译为常规表单参数,因此您必须进行一些补充。然而,它有一些共同的约定。

常规的 Web 表单不支持这种多级树结构。因此,您将需要使用不同类型的编码。将它放入 GET 参数中的最简单方法是硬编码一个名为“json”的顶级参数,然后将整个 JSON 字符串放入其中并进行 URL 转义。因此,对于您的示例,这看起来像:

{"auth": {"tenantName": "demo", "passwordCredentials": {"username": "demo", "password": "password"}}} 变成了

json=%7B%3Aauth%3D%3E%7B%3AtenantName%3D%3E%22demo%22%2C+%3ApasswordCredentials%3D%3E%7B%3Ausername%3D%3E%22demo%22%2C+%3Apassword% 3D%3E%22密码%22%7D%7D%7D

【讨论】:

  • 非常感谢您的建议,但我只需要一个硬编码的结果。我只需要知道将给定的 json 正文转换为 url 参数时的结果是什么。
  • 您好,非常感谢,但我需要以帖子的形式传递数据。所以在Java中它会像 String urlParam = "" 然后我将它转换为字节数组并将其写入 outputStream
  • 您在原始问题中说“url参数”。您也可以发布这种字符串(www 表单编码),或者您可以发送“原始帖子”。
猜你喜欢
  • 2016-05-09
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
相关资源
最近更新 更多