Js把Json序列化为Java接受的对象。
服务器端
Java定义
data class role(var name: String = "", var remark: String = "")
data class user(var name: String = "", var roles: Array<role> = arrayOf())
data class corp(var name: String = "", var users: Array<user> = 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 in value) {
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;
}
}) return ret;
} 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);
Js把Json序列化为Java接受的对象。的更多相关文章
- Json序列化为对象方法
/// <summary>/// json 序列化为对象/// </summary>/// <typeparam name="T">对象类型&l ...
- js处理json数据,java处理json数据
一.js处理json数据 处理办法之一是把本机json数据或远程返回json数据用eval函数,使之变成DOM对象. 例如: var people = { "programmers" ...
- js 表单序列化为json对象
$.fn.serializeJson = function () { var o = {}; var a = this.serializeArray(); $.each(a, function () ...
- Json 序列化为Dictionary
如下所示的json字符串中包含中文属性转换成英文属性 ["sid":"dd1312","success":true,"data&q ...
- json 序列化为数组
我们通常从后台取到json格式的数据到前台进行展示,在这个过程中可能户遇到一些json格式不是自己想要的格式,今天本人就遇到一个棘手的问题,最后在师傅的协助下才进行了正确格式的转换. 可以说最悲哀的莫 ...
- json转化为java实体
import net.sf.json.JSONObject; Map<String, Object> classMap = new HashMap<String, Object> ...
- js解析json读取List中的实体对象示例
1.由后台action 传给前台是需要将map 转成json格式 复制代码代码如下: Map<String, List> resultMap: JSONObject json = JSON ...
- JSON数据与Java对象的相互转换
JSON数据与Java对象的相互转换 JSON解析器 常见的解析器:Jsonlib .Gson. fastjson. jackson JSON转化为Java对象 使用步骤: 1.导入jackson的相 ...
- JS对象序列化为JSON对象的方法
var $ = $ || {}; /** * 将JS对象序列化为JSON字符串 * @param {Mixed} o The variable to decode * @return {String} ...
随机推荐
- python曲线拟合
http://blog.sina.com.cn/s/blog_aed5bd1d0102vid7.html 1.多项式拟合范例: import matplotlib.pyplot as plt impo ...
- MySQL之慢查询日志分析
在MySQL命令行中查看慢查询日志是否打开了: mysql> show variables like '%slow_query%'; +---------------------------+- ...
- Linux远程访问及控制(SSH)
1.ssh协议:用于远程登录,端口号:22/tcp 配置文件: 1)服务器端口:/etc/ssh/sshd_config 2)客户端 :/etc/ssh/ssh_config 2.服务器监听选项: U ...
- 函数重载(overload)
重载的定义及特点 在同一个类中,允许存在一个以上的同名函数, 只要他们的参数个数或者参数类型不同(不仅指两个重载方法的参数类型不同,还指相同参数拥有不同的参数类型顺序)就构成重载. 重载只和参数列表有 ...
- orcale 使用创建日期排序然后分页每次取排序后的固定条数
需求: 一个使用mybatis分页插件的分页列表, 现在要求新增一条数据或者修改一条数据后,显示在最前端 思路: 使用sql , 先将查询出来的数据排序, 然后使用rownum > page*s ...
- Mac OS X 下优化 Terminal,一篇就够了!
先上最终效果图: 目录 目录 1. 相关工具介绍 2. 配置总览 3. 安装步骤 3.1. 安装 iTerm2 3.2. 安装XCode's Command line tools 3.3. 检查 zs ...
- go标准库的学习-sync互斥
https://studygolang.com/pkgdoc 导入方法: import "sync" sync包提供了基本的同步基元,如互斥锁.除了Once和WaitGroup类型 ...
- layui关闭弹出层
layui关闭弹出层,今天我在vscode中使用p parent.layer.closeAll()发现没效果 换成layer.closeAll()就解决了这个问题. 由此我觉得关闭layui关闭弹出层 ...
- shell脚本之获取CPU使用率
今天一个同事要测试OJ项目,同时我这边也需要知道他在压测过程中, CPU的使用率怎么样,虽说可以用top实时查看,但是进程太多了,我不需要获取那么多信息,我仅仅只要知道当前压测过程中CPU实时的使用率 ...
- 素数判断-----埃氏筛法&欧拉筛法
埃氏筛法 /* |埃式筛法| |快速筛选素数| |15-7-26| */ #include <iostream> #include <cstdio> using namespa ...