【发布时间】:2014-10-24 05:06:26
【问题描述】:
我想在 url 中发送 json 数据,如下所示。
editTest.jsp?details=374889331-{"aNumber":2}
我该怎么做?
【问题讨论】:
标签: java json http-request-parameters
我想在 url 中发送 json 数据,如下所示。
editTest.jsp?details=374889331-{"aNumber":2}
我该怎么做?
【问题讨论】:
标签: java json http-request-parameters
URL 编码您的详细信息参数:
String otherParameter = "374889331-";
String jsonString = "{\"aNumber\":2}";
String url = "editTest.jsp?details=" + URLEncoder.encode(otherParameter + jsonString, "UTF-8");
【讨论】:
%7B%22aNumber%22%3A2%7D.
您需要将JSON object 转换为字符串
JSONObject obj = new JSONObject();
obj.put("name","foo");
StringWriter out = new StringWriter();
obj.writeJSONString(out);
String jsonText = out.toString();//JSON object is converted to string
现在,您可以将此jsonText 作为参数传递。
【讨论】:
Json2 可以提供帮助。 JSON.stringify(obj)
【讨论】:
我们可以使用Gson的帮助
String result =new Gson().toJson("your data");
注意:Gson 需要 jar 文件
【讨论】:
我们可以使用 GSON 将 Object 转换为 JSON Object,然后解析 JSON 对象并将其转换为查询参数字符串。 Object 应该只包含原始对象,如 int、float、string、enum 等。否则,您需要添加额外的逻辑来处理这些情况。
public String getQueryParamsFromObject(String baseUrl, Object obj) {
JsonElement json = new Gson().toJsonTree(obj);
// Assumption is that all the parameters will be json primitives and there will
// be no complex objects.
return baseUrl + json.getAsJsonObject().entrySet().stream()
.map(entry -> entry.getKey() + "=" + entry.getValue().getAsString())
.reduce((e1, e2) -> e1 + "&" + e2)
.map(res -> "?" + res).orElse("");
}
【讨论】: