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} ...
随机推荐
- 使用EWS API读取邮件
#安装EwsManagedApi.msi,然后导入EWS模块 Import-Module -Name "C:\Program Files\Microsoft\Exchange\Web Ser ...
- 数据可视化:CSV格式,JSON格式
下载CSV格式数据,进行可视化 csv.reader()创建一个与文件有关联的阅读器(reader)对象,reader处理文件中的第一行数据,并将每一项数据都存储在列表中 head_row = nex ...
- python--继承关系
如果子类中定义与父类同名的方法或属性,则自动会覆盖父类对应的方法或属性. 子类完全继承父类的实例 >>> class Parent: def setName(self): print ...
- ccf-20171203 Crontab问题
这题有如下几个点要注意: 1.最开始输出的开始时间和截止时间,这里是不包含截止时间的. 2.月份和星期的英文表示是大小写任意的,并未规定必须是Sat这种形式. 3.星期天的数字标识是0. 我的思路是, ...
- IO流(字节流,字符流,缓冲流)
一:IO流的分类(组织架构) 根据处理数据类型的不同分为:字节流和字符流 根据数据流向不同分为:输入流和输出流 这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图: 二:字符字节 ...
- js常见错误类型
(1)SyntaxError SyntaxError是解析代码时发生的语法错误 // 变量名错误 var 1a; // 缺少括号 console.log 'hello'); (2)ReferenceE ...
- MongoDB基础教程系列--目录结构
最近对 MongoDB 产生兴趣,在网上找的大部分都是 2.X 版本,由于 2.X 与 3.X 差别还是很大的,所以自己参考官网,写了本系列.MongoDB 的知识还是很多的,本系列会持续更新,本文作 ...
- oracle sqlplus 回退键以及上下键
Linux中安装完Oracle后,默认的 sqlplus 上下键是不能用的,安装了 rlwrap 之后就能通过上下键翻回历史命令了 下载地址 https://github.com/hanslub42/ ...
- 转://执行impdp时出现ORA-39154错误的解决案例
问题描述如下导出过程正常:expdp \"/ as sysdba\" tables=user_a.t directory=mydir dumpfile=t.dmp logfile= ...
- A - Divisors POJ - 2992 (组合数C的因子数)数学—大数
题意:就是求组合数C的因子的个数! 先说一下自己THL的算法,先把组合数求出来,然后将这个大数分解,得到各个素数的个数,再利用公式!用最快的大数分解算法 分析一下时间复杂度! n1/4但是分析一下 ...