后台解析json格式

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();
}

}

猜你喜欢

转载自blog.csdn.net/weixin_42720502/article/details/81587838