jsonNote的常用方法: https://blog.csdn.net/mst1010/article/details/78589059
实现:一个商品对应多个规格,一个规格对应多个规格分类
json格式
{
"key":"varlue",
"productSpecifications":[
{
"specificationName":"规格名称1",
"specificationType":{
"type1":"规格分类1",
"type2":"规格分类2",
"type3":"规格分类3"
}
},
{
"specificationName":"规格名称2",
"specificationType":{
"type1":"规格分类1",
"type2":"规格分类2",
"type3":"规格分类3"
}
}
]
}
后台代码
package com.banma.utils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public class JSONUtils2 {
/**
* @param args
*/
public static void main(String[] args) {
String data = "{\"productSpecifications\": [{ \"specificationName\": \"规格名称1\", \"specificationType\":{\"type1\" : \"规格分类1\",\"type2\" : \"规格分类2\",\"type3\" : \"规格分类3\"}},{ \"specificationName\": \"规格名称2\", \"specificationType\":{\"type1\" : \"规格分类1\",\"type2\" : \"规格分类2\",\"type3\" : \"规格分类3\"}}]}";
String data2 = parseJson(data);
System.out.println(data2);
}
public static String parseJson(String data) {
// 用来展现解析Json得到的值
StringBuffer buf = new StringBuffer();
try {
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(data); // 读取Json
// rootNode.path("xx")返回的还是一个JsonNode对象,调用该JsonNode的相应方法,得到键对应的值
// 得到productSpecifications的JsonNode对象
JsonNode productSpecifications = rootNode.path("productSpecifications");
System.out.println(productSpecifications.size());
// 遍历 info 内的 array
if (productSpecifications.isArray())
{
for (JsonNode objNode : productSpecifications)
{
JsonNode specificationName = objNode.get("specificationName");
JsonNode specificationType = objNode.get("specificationType");
for (JsonNode type : specificationType) {
System.out.println(type);
}
System.out.println(objNode);
}
}
} catch (JsonProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return buf.toString();
}
}