我有REST客户端,它提供URL作为参数。但我的云REST基础架构只接受JSON格式。
有没有办法在Java中将URL参数转换(解析)为JSON格式?
网址参数示例:
data=data10&sensor=sensor10&type=type10
到JSON格式,如:
{"data":"data10","sensor":"sensor10","type":"type10"}
答案 0 :(得分:5)
没有开箱即用的解决方案,因此开发一种方法来解决这个问题是最实际的。
这是一个参数到JSON转换器的方法:
public static String paramJson(String paramIn) {
paramIn = paramIn.replaceAll("=", "\":\"");
paramIn = paramIn.replaceAll("&", "\",\"");
return "{\"" + paramIn + "\"}";
}
方法输入:
data=data10&sensor=sensor10&type=type10
方法返回输出:
{"data":"data10","sensor":"sensor10","type":"type10"}
答案 1 :(得分:1)
尝试使用URLEncoder / URLDecoder方法编码()和解码()。
这是一个非常简单的例子:
import java.net.URLDecoder;
import java.net.URLEncoder;
/*... further code ...*/
try {
String someJsonString = "{\"num\":2}";
String encoded = URLEncoder.encode(jsonString, "UTF-8");
System.out.println(encoded);
String decoded = URLDecoder.decode(encoded, "UTF-8");
System.out.println(decoded);
}
catch(UnsupportedEncodingException e){
e.printStackTrace();
}
以下是一些参考文献:
How to send json data as url...
URLEncoder.encode() deprecated...
Passing complex objects in URL parameters
最后是java docs