get方式传json参数的一种方法

遇到了不得不使用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转码回来啊~~

你可能感兴趣的:(java)