json序列化 java对象_Js把Json序列化为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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值