版权声明:转载请加链接 https://blog.csdn.net/y526089989/article/details/88871856
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
public class ProductResultDeserializer extends JsonDeserializer<JointOperationProductResult> {
@Override
public JointOperationProductResult deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
JsonNode node = jp.getCodec().readTree(jp);
String code = node.get("code").asText();
Integer total = node.get("total").asInt();
JsonNode listNode =node.path("list");
List<JointOperationResultList> list=new ArrayList<JointOperationResultList>();
System.out.println("本次List条数为"+listNode.size());
for (int i = 0; i < listNode.size(); i++) {
JointOperationResultList entity=new JointOperationResultList();
entity.setRewrite(listNode.get(i).get("rewrite").asText());
entity.setName(listNode.get(i).get("name").asText().replaceAll("'", "''"));
entity.setItemno(listNode.get(i).get("itemno").asText());
entity.setSales(listNode.get(i).get("sales").asText());
entity.setKeywords(listNode.get(i).get("keywords").asText().replaceAll("'", "''"));
String context=listNode.get(i).get("content").asText().replaceAll("'", "''");
entity.setContent(context);
entity.setCategory(listNode.get(i).get("category").asText().replaceAll("'", "''"));
entity.setCategoryid(listNode.get(i).get("categoryid").asText());
entity.setSize(listNode.get(i).get("size").asText());
entity.setWeight(listNode.get(i).get("weight").asText());
entity.setR_weight(listNode.get(i).get("r_weight").asText());
entity.setColor(listNode.get(i).get("color").asText());
entity.setImage(listNode.get(i).get("image").asText());
entity.setCreate_time(listNode.get(i).get("create_time").asText());
entity.setCategory_path(listNode.get(i).get("category_path").asText());
entity.setMaterial(listNode.get(i).get("material").asText());
entity.setPrice(listNode.get(i).get("price").asText());
entity.setRmb_price(new BigDecimal(listNode.get(i).get("rmb_price").asText()));
//images
List<String> images=new ArrayList<String>();
JsonNode imagesNode =listNode.get(i).get("images");
//System.out.println(imagesNode.size());
if(imagesNode!=null&&imagesNode.size()>0)
{
for(int j = 0; j< imagesNode.size(); j++)
{
images.add(imagesNode.get(j).asText());
}
}
entity.setImages(images);
JsonNode tagsNode =listNode.get(i).get("tags");
if(tagsNode.size()>0)
{
Iterator<Entry<String, JsonNode>> it=tagsNode.fields();
Map<String,JointOperationTag> tags=new HashMap<String,JointOperationTag>();
while (it.hasNext()) {
Entry<String, JsonNode> entry = it.next();
JointOperationTag jot=new JointOperationTag();
//name
jot.setName(entry.getValue().get("name").asText());
//son
JsonNode sonNode=entry.getValue().get("son");
List<String> sons=new ArrayList<String>();
if(sonNode.size()>0)
{
for(int k = 0; k< sonNode.size();k++)
{
sons.add(sonNode.get(k).asText());
}
}
jot.setSon(sons);
tags.put(entry.getKey(),jot );
}
entity.setTags(tags);
}
list.add(entity);
}
return new JointOperationProductResult(code,total,list);
}
}
调用:
public static JointOperationProductResult jsonToObjectForResult(String json) {
JointOperationProductResult res = null;
try {
if (json == null) {
return null;
}
if (json.isEmpty()) {
return null;
}
JsonFactory jsonFactory = new MappingJsonFactory();
JsonParser jsonParser = jsonFactory.createParser(json);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
SimpleModule module = new SimpleModule();
module.addDeserializer(JointOperationProductResult.class, new ProductResultDeserializer());
mapper.registerModule(module);
res = mapper.readValue(jsonParser, JointOperationProductResult.class);
} catch (Exception ex) {
ex.printStackTrace();
res = null;
}
return res;
}