js encodeurl java接收,Js把Js序列化为urlencoded的方法,Java接受复杂对象。

服务器端

Java定义

data class role(var name: String = "", var remark: String = "")

dataclass user(var name: String = "", var roles: Array =arrayOf())

dataclass corp(var name: String = "", var users: Array =arrayOf());

@PostMapping(value= "hi")

fun hiPost(qm: corp, session: HttpSession): String {}

Java接受的格式,Kotlin Test

@Test

fun testHi() {

var map=JsonMap();

map["name"] = "金维度";

map["users[0].name"] = "张三";

map["users[0].roles[0].name"] = "销售";

map["users[0].roles[0].remark"] = "销售角色";

map["users[0].f"] = "王大,王二";

map["users[1].name"] = "本四";

map["users[1].roles[0].name"] = "开发";

map["users[1].roles[0].remark"] = "开发角色";

map["users[1].roles[1].name"] = "UI";

map["users[1].roles[1].remark"] = "设计师";//map["createAt"] = 1492762310797;

var result= mvc!!.perform(

MockMvcRequestBuilders.post("/hi")

.contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE)

.content(URLEncodedUtils.format(map.ToNameValuePairs(), Charset.defaultCharset()))

)

.andDo(MockMvcResultHandlers.print())

.andReturn();

Assert.assertEquals(result.response.status,200);

println(result);

}

客户端需要PostBody内容:

name=%E9%87%91%E7%BB%B4%E5%BA%A6&users%5B0%5D.name=%E5%BC%A0%E4%B8%89&users%5B0%5D.roles%5B0%5D.name=%E9%94%80%E5%94%AE&users%5B0%5D.roles%5B0%5D.remark=%E9%94%80%E5%94%AE%E8%A7%92%E8%89%B2&users%5B1%5D.name=%E6%9C%AC%E5%9B%9B&users%5B1%5D.roles%5B0%5D.name=%E5%BC%80%E5%8F%91&users%5B1%5D.roles%5B0%5D.remark=%E5%BC%80%E5%8F%91%E8%A7%92%E8%89%B2&users%5B1%5D.roles%5B1%5D.name=UI&users%5B1%5D.roles%5B1%5D.remark=%E8%AE%BE%E8%AE%A1%E5%B8%88

客户端

定义:

/**Java方式的序列化。

* @param obj*/jv.param_jmap= function(obj) {var ret ={};

Object.keys(obj).forEach(key=>{var value =obj[key];if(Array.isArray(value)) {for (var i invalue) {var m =jv.param_jmap(value[i]);

Object.keys(m).forEach(sk=>{

ret[key+ "[" + i + "]." + sk] =m[sk];

})

}

}else if(jv.isPlainObject(value)) {var m =jv.param_jmap(value);

Object.keys(m).forEach(sk=>{

ret[key+ "." + sk] =m[sk];

})

}else{

ret[key]=value;

}

})returnret;

}

jv.param= function(obj) {var ret =jv.param_jmap(obj);

console.log(ret);return Object.keys(ret).map(it =>{return encodeURIComponent(it) + "=" +encodeURIComponent(ret[it])

}).join("&");

}

测试:

var data ={name:"金维度",users:

[

{name:"张三",roles:[{name:"销售",remark:"销售角色"}]},

{name:"本四",roles:[{name:"开发",remark:"开发角色"},{name:"UI",remark:"设计师"}]}

]

}var url = jv.param(data);

原文:http://www.cnblogs.com/newsea/p/6791999.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java前端使用GET请求向后端传输对象列表时,可以将对象列表转换为JSON格式,并将其作为请求参数附加在URL的查询字符串中。以下是一个示例代码: ```java import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; public class FrontendExample { public static void main(String[] args) { List<YourObject> objectList = new ArrayList<>(); // 假设objectList已经初始化和填充了对象数据 String jsonParam = convertObjectListToJson(objectList); String encodedParam = encodeURL(jsonParam); String url = "http://backend-api.com/endpoint?objects=" + encodedParam; // 发起GET请求并处理响应 // ... } private static String convertObjectListToJson(List<YourObject> objectList) { // 使用JSON库(如Gson或Jackson)将对象列表转换为JSON字符串 // ... return json; } private static String encodeURL(String param) { try { return URLEncoder.encode(param, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return ""; } } } ``` 在后端接收请求时,你可以使用相应的框架(如Spring MVC)来处理GET请求并解析传递的参数。以下是一个简单的示例代码: ```java @RestController public class BackendController { @GetMapping("/endpoint") public void handleRequest(@RequestParam("objects") String encodedObjects) { String decodedObjects = decodeURL(encodedObjects); // 将JSON字符串转换回对象列表 List<YourObject> objectList = convertJsonToObjectList(decodedObjects); // 处理接收到的对象列表 // ... } private static String decodeURL(String param) { try { return URLDecoder.decode(param, "UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return ""; } } private static List<YourObject> convertJsonToObjectList(String json) { // 使用JSON库(如Gson或Jackson)将JSON字符串转换为对象列表 // ... return objectList; } } ``` 这是一个简单的示例,你可以根据你的实际需求进行更详细的实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值