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} ...
随机推荐
- 如何创建和还原SQL Server 2005数据库?
在还原SQL Server 2005数据库文件之前,建议先把要还原的数据库文件复制粘贴到某个盘的根目录下,这样便于一会儿找到相关的文件,比如C盘. 先打开SQL Server 2005的Microso ...
- Django学习---快速搭建搜索引擎(haystack + whoosh + jieba)
Django下的搜索引擎(haystack + whoosh + jieba) 软件安装 haystack是django的开源搜索框架,该框架支持Solr,Elasticsearch,Whoosh, ...
- Hive-1.2.1_03_DDL操作
Hive官方文档:Home-UserDocumentation Hive DDL官方文档:LanguageManual DDL 参考文章:Hive 用户指南 注意:各个语句的版本时间,有的是在 hiv ...
- 随机生成&部门匹配
整体概况 1.完整程序概况 (1)程序整体构架 (2)生成程序模型 (3)匹配算法模型 (4)生成结果评估 (5)命名规范 (6)先期和后期分工 2.心路历程与对全新的java认识(心得体会篇) (1 ...
- [bug] 验证selenium的显式和隐式等待而发现的一个低级错误
隐式等待:如果在规定时间内网页加载完成,则执行下一步,否则一直等到时间截止,然后执行下一步.按照这说法举了个例子为啥不会按照预期执行了,难不成是这个定义有问题(~~~~~直接否定不是定义的问题,相信它 ...
- PyQt5--TextDrag
# -*- coding:utf-8 -*- ''' Created on Sep 21, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...
- jQuery.form 的最新版本是 3.14
http://www.oschina.net/news/32628/jquery-form-3-14 有日子没跟进 jQuery.form 插件了,该插件已经从 2.xx 更新到 3.xx 了,目前最 ...
- Hunter -- 批量文件管理工具
一个简单工具, 用来进行批量文件的重命名, 更改后缀, 搜索特定后缀, 等 下载地址:http://download.csdn.net/download/kuangsun/7545179
- ceph 问题处理
1.三个ceph monitor节点clock skew时钟偏移问题?解决:(1)其他控制节点更改ntp.conf与controller01进行同步,如果ntpd不生效,使用date -s " ...
- Java程序在Linux上运行虚拟内存耗用很大
突然集群的2个节点挂了,通过top查看, 虚拟内存22G, 通过 pmap -x 8 | grep anon 一大堆64M Linux下glibc的内存管理机制用了一个很奇妙的东西,叫arena.在g ...