我有REST客户端,提供URL作为参数。但是我的云REST基础设施只接受JSON格式。
有没有办法在Java中将URL参数转换(解析)为JSON格式?
URL参数示例:
data=data10&sensor=sensor10&type=type10转换为JSON格式,如:
{"data":"data10","sensor":"sensor10","type":"type10"}发布于 2015-04-01 18:15:03
解决方案
没有现成的解决方案,因此开发一种方法来解决这个问题是最实际的。
下面是一个参数到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"}发布于 2015-04-01 09:55:25
尝试使用URLEncoder/URLDecoder方法encode()和decode()。
下面是一个非常快速的示例:
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文档。
URLDecoder
URLEncoder
https://stackoverflow.com/questions/29381446
复制相似问题