如何在java中将url中的json数据作为请求参数发送

9w11ddsr  于 2023-10-21  发布在  Java
关注(0)|答案(6)|浏览(146)

我想在URL中发送JSON数据,如下所示。

editTest.jsp?details=374889331-{"aNumber":2}

我该怎么做?

yiytaume

yiytaume1#

URL编码您的详细信息参数:

String otherParameter = "374889331-";    
String jsonString = "{\"aNumber\":2}";

String url = "editTest.jsp?details=" + URLEncoder.encode(otherParameter + jsonString, "UTF-8");
vc6uscn9

vc6uscn92#

需要将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作为参数传递。

bvpmtnay

bvpmtnay3#

我们可以使用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("");
    }
bxgwgixi

bxgwgixi4#

Json2可以帮助。JSON.stringify(obj)

cvxl0en2

cvxl0en25#

我们可以使用Gson的帮助

String result =new Gson().toJson("your data");

NB:Gson需要的jar文件

pn9klfpd

pn9klfpd6#

我想补充一下我的解决方案:

import java.net.URI;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonElement;

private static String createURIString(String str) {
    try {
        URI uri = new URI(str);
        return uri.toASCIIString();
    } catch (URISyntaxException x) {
        throw new IllegalArgumentException(x.getMessage(), x);
    }
}

private static String convertJSONBodyToURL(String input){
    // input = "{ \"name\": \"Test\", \"java\": true}";

    ArrayList<String> arr = new ArrayList<String>();
    
    JsonObject jsonObject = new JsonParser().parse(input).getAsJsonObject();
    for (Entry<String, JsonElement> entry : jsonObject.entrySet()) {
        String key = entry.getKey();
        String value = entry.getValue().toString();
            // remove "', new URI would fail
            value = value.replace("\"", "").replace("'", "");
        
        // value sanity checks
        String valueURI = FixAPI.createURIString(value);
        
        // fail in case of problems
        if(valueURI == null){
            // err
            return null;
        }

        // if safe, add to array            
        arr.add(key + "=" + value);
    }
    
    // join array to String
    String joinedURLString = String.join("&", arr);
    
    return joinedURLString;
}

相关问题