json 串转成 java 对象再拼接成前台 html 元素
获取商品参数 json 串,转成 java 对象,再拼接成前台 html 的Service方法
@Override
public String getItemParam(Long itemId) {
try {
String json = HttpClientUtil.doGet(REST_BASE_URL+ITEM_PARAM_URL+itemId);
if (StringUtils.isNotEmpty(json)) {
TaotaoResult taotaoResult = TaotaoResult.formatToPojo(json, TbItemParamItem.class);
if (taotaoResult.getStatus()==200) {
TbItemParamItem itemParamItem = (TbItemParamItem) taotaoResult.getData();
String data = itemParamItem.getParamData();
String html = "";
//把规格参数字符串转换为json对象(这里是转换成了List集合,集合里面存的map键值对)
List<Map> jsonList = JsonUtils.jsonToList(data, Map.class);
for (Map map : jsonList) {
html+="<div class=\"Ptable-item\">\n" +
"<h3>"+map.get("group")+"</h3>\n" +
"<dl>\n";
//这里map里面的key params 对应的值还是可以强制转为另一个map(因为map里面的建和值都可以是对象)
//因为前面已经用 JsonUtils.jsonToList 整体转换过,所以这里只要强制转换即可
List<Map> paramList = (List<Map>) map.get("params");
for (Map param : paramList) {
html+= "<dt>"+param.get("k")+"</dt>\n" +
"<dd>"+param.get("v")+"</dd>\n" ;
}
html+="</dl>\n" +
" </div>";
}
System.out.println(html);
return html;
}
}
} catch (Exception e) {
e.printStackTrace();
} return "";
}
在数据库中存储的 json 串:
[
{
"group": "主体",
"params": [
{
"k": "品牌",
"v": "花纹"
},
{
"k": "型号",
"v": "555"
},
{
"k": "颜色",
"v": "666"
},
{
"k": "上市年份",
"v": "6666"
}
]
},
{
"group": "网络",
"params": [
{
"k": "4G网络制式",
"v": "66"
},
{
"k": "3G网络制式",
"v": "66"
},
{
"k": "2G网络制式",
"v": "66"
}
]
},
{
"group": "存储",
"params": [
{
"k": "机身内存",
"v": "66"
},
{
"k": "储存卡类型",
"v": "66"
}
]
}
]
通过
List<Map> jsonList = JsonUtils.jsonToList(data, Map.class); 方法 转换成 java对象 后的样子:
[
{ GROUP = 主体,
params =[
{ k = 品牌, v = 花纹 },
{ k = 型号, v = 555 },
{ k = 颜色, v = 666 },
{ k = 上市年份, v = 6666 }
]
}, { GROUP = 网络,
params =[
{ k = 4G网络制式, v = 66 },
{ k = 3G网络制式, v = 66 },
{ k = 2G网络制式, v = 66 }
]
}, { GROUP = 存储,
params =[
{ k = 机身内存, v = 66 },
{ k = 储存卡类型, v = 66 }
]
}
]
最外层是个 list ,然后里面是 map1,map1 里面的 key 为 params 的值 还是一个 List2,然后里面又是 Map2
下面附上 json工具类的代码:
package com.taotao.common.utils; import java.util.List; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper; public class JsonUtils { // 定义jackson对象
private static final ObjectMapper MAPPER = new ObjectMapper(); /**
* 将对象转换成json字符串。
* <p>Title: pojoToJson</p>
* <p>Description: </p>
* @param data
* @return
*/
public static String objectToJson(Object data) {
try {
String string = MAPPER.writeValueAsString(data);
return string;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
} /**
* 将json结果集转化为对象
*
* @param jsonData json数据
* @param clazz 对象中的object类型
* @return
*/
public static <T> T jsonToPojo(String jsonData, Class<T> beanType) {
try {
T t = MAPPER.readValue(jsonData, beanType);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
} /**
* 将json数据转换成pojo对象list
* <p>Title: jsonToList</p>
* <p>Description: </p>
* @param jsonData
* @param beanType
* @return
*/
public static <T>List<T> jsonToList(String jsonData, Class<T> beanType) {
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
try {
List<T> list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (Exception e) {
e.printStackTrace();
} return null;
} }
下面附上分类模板的数据库中存的 json 串(仅供参考模板和最终值直接的关系):
[
{
"group": "主体",
"params": [
"品牌",
"型号",
"颜色",
"上市年份"
]
},
{
"group": "网络",
"params": [
"4G网络制式",
"3G网络制式",
"2G网络制式"
]
},
{
"group": "存储",
"params": [
"机身内存",
"储存卡类型"
]
}
]
json 串转成 java 对象再拼接成前台 html 元素的更多相关文章
- 利用JAVA反射机制将JSON数据转换成JAVA对象
net.sf.json.JSONObject为我们提供了toBean方法用来转换为JAVA对象, 功能更为强大, 这里借鉴采用JDK的反射机制, 作为简单的辅助工具使用, 有些数据类型需要进行转 ...
- json字符串转json对象,json对象转换成java对象
@RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST) @Resp ...
- json字符串转成 json对象 json对象转换成java对象
import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 依赖包 <dependency> ...
- json相关类库,java对象与json相互转换
有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...
- java将map拼接成“参数=值&参数=值”
Java将Map拼接成"参数=值&参数=值" 把一个map的键值对拼接成"参数=值&参数=值"即"username=angusbao& ...
- SOAP报文转成JAVA对象
在今天以前我还没有用过代码解析过SOAP报文,更别提转成JAVA对象了,今天的任务中报文这个模样的,(为防止数据信息,以下数据我故意打乱了防止泄露什么信息.) <?xml version=&qu ...
- 类对象序列化为json串,json串反序列化为类对象
1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...
- 取得远端相应Json并转化为Java对象(嵌套对象)二
工程下载链接:https://files.cnblogs.com/files/xiandedanteng/JsonParse20190929.rar 客户端: 如果从Restful Service取得 ...
- 比较任意两个JSON串是否相等(比较对象是否相等)JAVA版
废话少说,直接入题. 在面向对象语言中,经常会比较两个对象是否相等,而比较的大多是实体类实例,也就是封装数据的那些类实例,或者是Map.List互相嵌套成的复杂数据结构. 比较对象是否相等,常见的思路 ...
随机推荐
- Hadoop(2)--hdfs
Hadoop(2) Hadoop底层封装的的是HDFS和MapReduce两种框架 在Hdfs中采用的是主从结构(Madter-slaver)就像领导和员工一样,领导负责整个公司的管理工作,而员工就负 ...
- Leecode刷题之旅-C语言/python-28.实现strstr()
/* * @lc app=leetcode.cn id=28 lang=c * * [28] 实现strStr() * * https://leetcode-cn.com/problems/imple ...
- Black And White (DFS 训练题)
G - Black And White ================================================================================ ...
- angularjs post data
//post json 时收不到数据,目前只找到方法post form形式的key-value值 //关键是设置 headers: { 'Content-Type': 'application/x- ...
- List中的FindAll用法
在泛型List中查找符合某个字段的全部数据,可以采用如下方式: //1.现将实体数据listList<ADDaAn> objDAList = db.ADDaAns.ToList(); // ...
- EAS_Table
SHR人力 员工表 T_BD_PERSON fbirthday 出生日期 femployeetypeid 员工状态 员工状态 T_HR_BDEMPLOYEETYPE T ...
- 521. [NOIP2010] 引水入城 cogs
521. [NOIP2010] 引水入城 ★★★ 输入文件:flow.in 输出文件:flow.out 简单对比时间限制:1 s 内存限制:128 MB 在一个遥远的国度,一侧是风景秀 ...
- MapRudecer
MapReducer基本概念 Mapreduce是一个分布式运算程序的编程框架,是用户开发“基于hadoop的数据分析应用”的核心框架: Mapreduce核心功能是将用户编写的业务逻辑代码和自带默认 ...
- Bug是一种财富-------研发同学的错题集、测试同学的遗漏用例集
此文已由作者王晓明授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 各位看官,可能看到标题的你一定认为这是一篇涉嫌"炒作"的文章,亦或是为了吸引眼球而起的标 ...
- 关于transition动画下,如果有fixed元素,渲染的奇葩问题
之前我们机票页面有生成一个低价日历,然后我们有一个需求就是滚动到那个月份,对应显示这个月,然后这个区域是fixed定位的,然后奇怪的事情发生了,就是低价日历的动画执行完后,修改页面的html却没有正常 ...