获取商品参数 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 元素的更多相关文章

  1. 利用JAVA反射机制将JSON数据转换成JAVA对象

    net.sf.json.JSONObject为我们提供了toBean方法用来转换为JAVA对象, 功能更为强大,  这里借鉴采用JDK的反射机制, 作为简单的辅助工具使用,   有些数据类型需要进行转 ...

  2. json字符串转json对象,json对象转换成java对象

    @RequestMapping(value = "updateInvestorApplyAccountNo", method = RequestMethod.POST) @Resp ...

  3. json字符串转成 json对象 json对象转换成java对象

    import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject; 依赖包 <dependency> ...

  4. json相关类库,java对象与json相互转换

    有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...

  5. java将map拼接成“参数=值&参数=值”

    Java将Map拼接成"参数=值&参数=值" 把一个map的键值对拼接成"参数=值&参数=值"即"username=angusbao& ...

  6. SOAP报文转成JAVA对象

    在今天以前我还没有用过代码解析过SOAP报文,更别提转成JAVA对象了,今天的任务中报文这个模样的,(为防止数据信息,以下数据我故意打乱了防止泄露什么信息.) <?xml version=&qu ...

  7. 类对象序列化为json串,json串反序列化为类对象

    1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...

  8. 取得远端相应Json并转化为Java对象(嵌套对象)二

    工程下载链接:https://files.cnblogs.com/files/xiandedanteng/JsonParse20190929.rar 客户端: 如果从Restful Service取得 ...

  9. 比较任意两个JSON串是否相等(比较对象是否相等)JAVA版

    废话少说,直接入题. 在面向对象语言中,经常会比较两个对象是否相等,而比较的大多是实体类实例,也就是封装数据的那些类实例,或者是Map.List互相嵌套成的复杂数据结构. 比较对象是否相等,常见的思路 ...

随机推荐

  1. 嵌入式C语言查表法

    转自:https://blog.csdn.net/morixinguan/article/details/51799668    作者:Engineer-Bruce_Yang 就像下面的这个表 之前写 ...

  2. Scrapy核心组件

    • 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事务(框架核心) • 调度器(Scheduler)用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个UR ...

  3. 文件 I/O字符流

    import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOExceptio ...

  4. Go语言使用百度翻译api

    Go语言使用百度翻译api 之前做过一个使用百度翻译api的工具,这个工具用于用户的自动翻译功能,是使用C#调用百度翻译api接口,既然在学习Go语言,那必然也是要使用Go来玩耍一番.这里我是这么安排 ...

  5. Django笔记 —— 表单(form)

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  6. Android开发免费类库和工具集合

    用于Android开发的免费类库和工具集合,按目录分类. Action Bars ActionBarSherlock Extended ActionBar FadingActionBar GlassA ...

  7. js数字格式化千分位格式

    带小数点的 var a = 8462948.2453; console.log(a.toLocaleString()) //8,462,948.245 不带小数点的 num.toString().re ...

  8. python3.x 编码问题

  9. 阿里的100TB Sort Benchmark排序比雅虎快了一倍还多,我的看法

    如果我的判断正确,它们使用的软件和算法应该是HADOOP,MAP/REDUCE,或者类似的技术方案.如果这些条件一样,影响计算结果的还有三个因素: 1.CPU的数量和CPU的处理能力     CPU的 ...

  10. 企业级Nginx Web服务优化实战

    web优化一览总结表 优化类型 优化说明 优化方法 安全优化 隐藏nginx版本信息优化 修改nginx配置文件实现优化 server_tokens off: 修改nginx版本信息优化 修改ngin ...