遇到了不得不使用get方式传json的情况,无奈之下只好想办法搞,经过几天的尝试,试过了map等各种转换后,才恍然发现,只要把json串用URLEncoder一下,作为参数值就可以了,接收的时候再用URLDecoder一下就可以读出来了,一种“暮然回首那人就在灯火阑珊处”的感觉,囧囧囧~~~
能用post还是尽量别用get了,毕竟get有长度限制(好像IE是2083个字符)~~
特此记录一下~~
整理了一下代码作为例子:
从文件里存放json串便于测试使用:
{
"key1": "1",
"g1": {
"sub1": "gs1",
"sub2": "gs2"
},
"key2": "2",
}
读取文件中的内容,进行json串转换:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import java.io.IOException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Map;
/**
* className: ReadFileIO
*
* @author 大熊猫喵喵
* @date 2018-09-29 16:11
*/
public class ReadFileNIO {
public static String readFileNIO(String fileName) throws IOException {
Path path = Paths.get(fileName);
byte[] bytes = Files.readAllBytes(path);
String resString = new String(bytes, StandardCharsets.UTF_8);
System.out.println("----读取的文件内容----");
System.out.println(resString);
JSONObject jsonObject = JSON.parseObject(resString);
System.out.println("---------json转码后------");
System.out.println(URLEncoder.encode(jsonObject.toString(), "utf-8"));
System.out.println("--------------------");
return resString;
}
}
把打印出来的转换好的码作为参数值拼在后面就可以了,比如转出的码为 +ure65++
拼在后面就可以了:http://localhost:8080/test/dotest?para=+ure65++
接收时记得用URLDecoder转码回来啊~~