在Java中将URL参数转换(解析)为JSON

时间:2015-04-01 01:37:17

标签: java json

我有REST客户端,它提供URL作为参数。但我的云REST基础架构只接受JSON格式。

有没有办法在Java中将URL参数转换(解析)为JSON格式?

网址参数示例:

data=data10&sensor=sensor10&type=type10

到JSON格式,如:

{"data":"data10","sensor":"sensor10","type":"type10"}

2 个答案:

答案 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

URLDecoder

URLEncoder