java - 如何在春季获得正确格式的json
问题描述
我正在使用 RestTemplate 和 JSONObject 从数据库获取数据并将帖子发送到服务器我的服务:
List<MyMap> customerList = customerService.getAllCustomerViewBasicInfo(params);
customerList 将从数据库中获取所有数据
我的控制器:
JSONArray ja = new JSONArray();
ja.put(customerList);
JSONObject obmain1 = new JSONObject();
obmain1.put("actionType", "update-contact");
obmain1.accumulate("data", ja);
JSONArray jomain1 = new JSONArray();
jomain1.put(obmain1);
JSONObject jomain = new JSONObject();
jomain.put("userSender", "myemail@gmail.com");
jomain.put("data", jomain1);
System.out.println(jomain);
当我获取数据时,结果如下:(格式错误)
{
"userSender": "myemail.com",
"data": [
{
"actionType": "update-contact",
"data": [
[
[
{
"name": "TEST",
"lastname": "TESTER",
"phones": "0165458852",
"addresses": "TEST",
"passport": "870402152364",
"customerType": "company"
},
{
"name": "TEST",
"lastname": "TESTER1",
"phones": "0165458852",
"passport": "870402152364",
"customerType": "company"
}
]
]
]
}
]
}
但它是错误的格式...
我想得到正确的格式并期望如下:(正确的格式)
{
"senderUser": "myemail.com",
"data": [
{
"actionType": "update-contact",
"data": {
"name": "LƯƠNG BẢO ",
"lastname": "LONG",
"type": 0,
"title": "ms",
"passport": "123123",
"gender": 1,
"dateOfBirth": "03-01-2021",
"emails": [
{
"value": "myemail.com"
}
],
"phones": [
{
"value": "0902032618"
}
],
"addresses": [
{
"addressDetail": "osaka",
"street": "36 osaka",
"city": "Tokio",
"state": "Tokio",
"country": {
"code": "JP",
"name": "japan"
}
}
],
"cusFields": [
{
"600f9cb0f02f084bd8a3dcdb": "TEST"
},
{
"600fbc6ef02f084bd8a3f7bd": "TEST2"
},
{
"600fbc6ef02f084bd8a3f7be": "TEST3"
}
],
"customerType": "company",
"600f9cb0f02f084bd8a3dcdb": "SME"
}
}
]
}
我怎样才能按预期获得正确的数据?多谢
解决方案
首先,在您的customersList 列表中,电子邮件、电话和地址属性必须是对象列表类型,如果不是,则在进行json 序列化之前,您必须这样做,用逗号等分隔符分割字符串。
完成此操作后,您应该使用的代码是
List<JSONObject> jsonList = customerList.stream().map( cust -> {
JSONObject obmain1 = new JSONObject();
obmain1.put("actionType", "update-contact");
obmain1.accumulate("data", cust);
}).collect(Collectors.toList())
JSONObject jomain = new JSONObject();
jomain.put("userSender", "myemail@gmail.com");
jomain.put("data", jsonList);
推荐阅读
- pandas - pandas agg 在某些列中连接字符串,同时在其他列中保持最大值
- python - 如何制作一个变量相对于另一个变量的直方图
- c - libc_nonshared.a 的用途是什么?
- python - 如何一次编辑部分 csv 文件?
- arduino - 使用电线通过 i2c 写入 DS1683 寄存器时出现问题
- python - 我正在尝试使用 selenium python 单击 chrome 新选项卡中的元素,但我收到错误 no such element 即使元素存在
- c# - 复选框启用
- java - "message": "无法执行语句;嵌套异常是 org.hibernate.exception.GenericJDBCException: 无法执行语句",
- android - 如何查找在 Google Play 商店/Appstore 上安装了我的应用程序的有根/越狱设备的数量
- javascript - 未找到此依赖项