淘淘商城11_复杂json格式的遍历

链接:https://pan.baidu.com/s/1RHdQjAxpe6IgdRdcERHnCQ 
提取码:ptez 
 

Service:

package com.taotao.service;

import com.taotao.pojo.TbItemParam;
import com.taotao.utils.TaotaoResult;

public interface ItemParamService {
	//根据id查询商品规格参数类别
	public TaotaoResult getItemParamByCid(long cid);
	
	//保存商品规格参数模板
	public  TaotaoResult saveItemParam(TbItemParam tbItemParam);
	
	//查询商品规格参数
	public String getItemParamItemByItemId(long itemId);
}

ServiceImpl:

package com.taotao.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.alibaba.druid.support.json.JSONUtils;
import com.taotao.mapper.ItemParamItemMapper;
import com.taotao.mapper.ItemParamMapper;
import com.taotao.pojo.TbItemParam;
import com.taotao.pojo.TbItemParamItem;
import com.taotao.utils.JsonUtils;
import com.taotao.utils.TaotaoResult;

@Service
public class ItemParamServiceImpl implements ItemParamService {

	@Autowired
	private ItemParamMapper itemParamMapper;
	@Autowired
	private ItemParamItemMapper itemParamItemMapper;
	
	/**
	 * 根据id查询规格参数模板类别
	 */
	@Override
	public TaotaoResult getItemParamByCid(long cid) {
		List<TbItemParam> list = itemParamMapper.getItemParamByCid(cid);
		if (list != null && list.size()>0) {
			 list.get(0);
		}
		return TaotaoResult.ok();
	}

	/**
	 * 保存规格参数模板
	 */
	@Override
	public TaotaoResult saveItemParam(TbItemParam tbItemParam) {
		//数据补全
		tbItemParam.setCreated(new Date());
		tbItemParam.setUpdated(new Date());
		itemParamMapper.saveItemParam(tbItemParam);
		return TaotaoResult.ok();
	}

	/**
	 * 查询商品规格参数
	 */
	@Override
	public String getItemParamItemByItemId(long itemId) {
		List<TbItemParamItem> list = itemParamItemMapper.getItemParamItemByItemId(itemId);
		if (list == null || list.size() == 0) {
			return "";
		}
		TbItemParamItem tbItem = list.get(0);//查询出规格参数
		//查询出所需要的字段
		String paramData = tbItem.getParamData();
		//解析json格式
		//将json格式转换为对象
		List<Map> listMap = JsonUtils.jsonToList(paramData, Map.class);
		StringBuffer sb = new StringBuffer();
		sb.append("<div data-tab=\"item\" class=\"hide\" style=\"display: block;\">\n" );
		sb.append(" <div class=\"Ptable\">\n" );
		
		for (Map map : listMap) {
			sb.append("   <div class=\"Ptable-item\">\n" );
			sb.append("     <h3>"+map.get("group")+"</h3>\n" );
		 List<Map>  m2 = (List<Map>) map.get("params");
		   for (Map map2 : m2) {
			sb.append("     <dl>\n" );
			sb.append("       <dt>"+map2.get("k")+"</dt>\n" );
			sb.append("       <dd>"+map2.get("v")+"</dd>\n" );
			sb.append("     </dl>\n" );
		   }
			sb.append("   </div>\n" );
		}
		sb.append(" </div>\n" );
		sb.append("</div>");
		return sb.toString();
	}

}

 

Controller:

package com.taotao.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.taotao.pojo.TbItemParam;
import com.taotao.service.ItemParamService;
import com.taotao.utils.TaotaoResult;

@Controller
@RequestMapping("/item/param")
public class ItemParamController {

	@Autowired
	private ItemParamService itemParamService;
	
	/**
	 * 商品规格模板查询,根据商品分类id
	 * @param cid
	 * @return
	 */
	@RequestMapping("/query/itemcatid/{cid}")
	@ResponseBody
	public TaotaoResult getItemParam(@PathVariable long cid){
		return itemParamService.getItemParamByCid(cid);
	}
	
	/**
	 * 添加规格参数模板
	 * @param cid
	 * @param paramData
	 * @return
	 */
	@RequestMapping("/save/{cid}")
	@ResponseBody
	public TaotaoResult saveTbItemParam(@PathVariable long cid,String paramData){
		TbItemParam param = new TbItemParam();
		param.setItemCatId(cid);
		param.setParamData(paramData);
		return itemParamService.saveItemParam(param);
	}
	
	/**
	 * 查询商品规格参数
	 * @param itemId
	 * @param model
	 * @return
	 */
	@RequestMapping("/itemParamItems/{itemId}")
	public String getItemParamItemByItemId(@PathVariable long itemId,Model model){
		String paramData = itemParamService.getItemParamItemByItemId(itemId);
		model.addAttribute("paramData", paramData);
		return "paramList";
	}
}

 

所需的工具类JsonUtils.java

package com.taotao.utils;

import java.util.List;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonNode;
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;
    }
    
}

 

测试结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值