千里马招标网站,河北建设工程信息网辅助评标系统,网站备案负责人修改,电影网站开发文档场景#xff1a; json大体格式一致#xff0c;但是 ext_info 扩展字段对象#xff0c;场景不同字段不同根据某字段类型,不同值#xff0c;对应不同实现的 Component#xff0c;处理不同场景这里根据 event#xff0c;来做不同处理 {data: {event… 场景 json大体格式一致但是 ext_info 扩展字段对象场景不同字段不同根据某字段类型,不同值对应不同实现的 Component处理不同场景这里根据 event来做不同处理 {data: {event: eventWoMan,event_id: 123,ext_info: {dist_sex: 女,dist_height: 162},target_name: 美女类型json},seq: 0
}{data: {event: eventWoMan,event_id: 123,ext_info: {dist_name: 小树,dist_age: 18},target_name: 帅哥类型json},seq: 0
}接收类 lombok.Data
public class BusinessMsgT {private T data;private int seq;}import com.fasterxml.jackson.annotation.JsonProperty;lombok.Data
public class MsgDataT {private String event;JsonProperty(event_id)private String eventId;JsonProperty(ext_info)private T extInfo;JsonProperty(target_name)private String targetName;}import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;Data
public class ExtInfoMan {/*** 目标姓名*/JsonProperty(dist_name)private String distName;/*** 目标年龄*/JsonProperty(dist_age)private String distAge;}Data
public class ExtInfoWoMan {/*** 目标性别*/JsonProperty(dist_sex)private String distSex;/*** 目标高度*/JsonProperty(dist_height)private String distHeight;}处理service public interface JsonTService {/*** 预处理消息* param businessMsg*/String handlerMsg(BusinessMsgMsgDataJsonNode businessMsg);}Service(eventMan)
public class JsonManServiceImpl implements JsonTService {Resourceprivate ObjectMapper objectMapper;SneakyThrowsOverridepublic String handlerMsg(BusinessMsgMsgDataJsonNode businessMsg) {JsonNode extInfo businessMsg.getData().getExtInfo();ExtInfoMan exitInfo objectMapper.treeToValue(extInfo, ExtInfoMan.class);return exitInfo.toString();}
}Service(eventWoMan)
public class JsonWoManServiceImpl implements JsonTService {Resourceprivate ObjectMapper objectMapper;SneakyThrowsOverridepublic String handlerMsg(BusinessMsgMsgDataJsonNode businessMsg) {JsonNode extInfo businessMsg.getData().getExtInfo();ExtInfoWoMan extInfoWoMan objectMapper.treeToValue(extInfo, ExtInfoWoMan.class);return extInfoWoMan.toString();}
}策略处理 import com.service.JsonTService;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;/*** author xiaoshu*/
Service
public class JsonStrategyContext {private final MapString, JsonTService orderStrategyMap new ConcurrentHashMap();public JsonStrategyContext(MapString, JsonTService strategyMap) {this.orderStrategyMap.putAll(strategyMap);}public JsonTService getResource(String event){return orderStrategyMap.get(event);}
}实际接口接收 Resourceprivate JsonStrategyContext jsonStrategyContext;ApiOperation(value 泛型处理同格式json扩展字段不一)PostMapping(/revice)public String revice(RequestBody BusinessMsgMsgDataJsonNode businessMsg){String event businessMsg.getData().getEvent();return jsonStrategyContext.getResource(event).handlerMsg(businessMsg);}