Red de conocimiento informático - Conocimiento del nombre de dominio - La llamada remota del microservicio devuelve el objeto linkedhashMap

La llamada remota del microservicio devuelve el objeto linkedhashMap

Con respecto a la razón por la cual las llamadas remotas devuelven linkedhashMap:

Debido a que las llamadas remotas rpc todavía usan HTTPClient en el nivel inferior, debe haber un orden al pasar parámetros. Cuando se pasa un mapa, los valores en el mapa. También debe estar en orden, de lo contrario la capa de servicio tendrá problemas al retomar, por lo que se convierte en

Spring tiene una clase llamada ModelMap, que hereda la clase pública LinkedhashMap

ModelMap. extiende

LinkedHashMap, por lo que el resultado devuelto se puede conectar directamente al ModelMap mediante una interfaz. Para recoger un ModelMap, tenga en cuenta que ModelMap no tiene genéricos. No importa qué tipo de mapeo sea el resultado que devuelva o cuán complejo sea el mapeo genérico, puede crear directamente un nuevo Modelmap y usarlo para recoger el mapa devuelto. resultados.

ObjectMapper mapper = new ObjectMapper();

Lista recomendarGroupList = mapper.convertValue(resultMap.get("records"),

new TypeReferencegt; () {});

El método de procesamiento anterior debe recibirse con un objeto: @JsonIgnoreProperties(ignoreUnknown =true) De lo contrario, cuando otros servicios agreguen nuevos campos, el servicio no podrá sincronizar el aumento de errores. .

Si utiliza ObjectMapper para convertir objetos obtenidos de otros servicios en el microservicio de Object a un tipo personalizado, estos objetos informarán errores.

Mapeador de ObjectMapper = new ObjectMapper();

DefaultResponse defaultResponse = proxy.getData();

Listresources = () defaultResponse.getData();?/ / La situación es la siguiente: los datos son de tipo objeto, pero en realidad son una Lista y desea convertir cada objeto de la Lista en un objeto utilizable individualmente for(inti = 0; i lt; serviceDateResources.size(); i ) {

Recurso recurso = mapper.convertValue(resources.get(i), Resource.class); //Después de este paso, el recurso es un tipo utilizable, si no lo convierte, informará un error

}

Durante la conversión anterior, si no necesita que se devuelvan todos los campos, debe ignorar algunos de ellos y agregar lo siguiente a su En clase personalizada:

import org.annotate.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown =true)

public class Resource {//? private Integer orderId ; // ¿Se proporciona este parámetro, pero no desea obtenerlo? private Integer otrerFiled;

}

O los siguientes métodos: No se requieren comentarios para estos dos métodos

1: ObjectMapper mapper = new ObjectMapper().setVisibility (JsonMethod . FIELD, Visibility.ANY);

? mapper.configure(DeserializationFeature.mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

II: ObjectMapperobjectMapper=newObjectMapper(); ? mapper .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

ObjectMapper puede convertir objetos hacia y desde otros formatos (como json). Si desea convertir objetos java al formato Json, puede usar:

ObjectMapper mapper = new ObjectMapper();

mapper.writeValueAsString(object);

Se producirá una JsonProcessingException y deberá manejarla usted mismo durante el proceso de conversión. Si desea establecer atributos en nulos para evitar la serialización y otros requisitos, puede agregar anotaciones a los atributos de la clase o agregar anotaciones directamente a la clase.

Si es un atributo, solo apunta a un atributo; si es una clase, apunta a todos los atributos de la clase. NON_EMPTY) Si el atributo está vacío ("") o NULL, no se serializará

@JsonInclude(Include.NON_NULL) Si el atributo es NULL, no se serializará

Debido a que subo imágenes, la aplicación es la siguiente:

R uploadFile = uploadFeignService.Upload(file).Upload(file, userId); //obtener objeto remoto

ObjectMapper mapper = new ObjectMapper();/ /conconvert

String jsonStr = mapper.writeValueAsString(uploadFile.get("filePath")); //convierte linkedhashMap a json

JSONObject jsondata= JSON.parseObject(jsonStr);/ /objeto json

Ruta de cadena = jsondata.getString("ruta");