MuleSoft
JSON, abreviação de JavaScriptObjectNotation, é um formato de intercâmbio de dados leve. É, um formato legível baseado em texto para representar estruturas de dados simples e matrizes associativas (chamados objetos).
{"Name": "John Doe","Dob": "01/01/1970","endereço de e-mail":[{"Type": "casa","Endereço": "john.doe@gmail.com"},{"Type": "trabalho","Endereço": "jdoe@bigco.com"}]}
E nós temos uma pessoa de objeto que deseja criar a partir dos dados JSON. Nós usamos anotações para descrever como realizar o mapeamento. Usamos o @JsonAutoDetectdizer que os nomes dos membros campo mapear diretamente para nomes de campo JSON:
@JsonAutoDetect
PublicclassPerson
{
privateString nome;
dobprivateString;
Lista privada <EmailAddress> emailAddresses;
Cadeia getNamepública () {nameretorno; }
setNamepublicvoid(String nome) {this.name= nome; }
Cadeia getDobpública () {returndob; }
setDobpublicvoid(dnString) {this.dob= dn; }
Lista pública <EmailAddress> getEmailAddresses() {emailAddressesde regresso; }
setEmailAddressespublicvoid(List<EmailAddress> emailAddresses) {this.emailAddresses= emailAddresses; }
}
O objeto EmailAddressque é usado nos emailAddressesé apenas mais um JavaBeancom a anotação @JsonAutoDetect.
Neste ponto Mulepode descobrir se deseja realizar uma JSON transforma com base nos parâmetros do método que está sendo chamado. Por exemplo:
PersonComponentclasse pública {
processPersonpublicvoid(@PayloadPessoa pessoa)
Aqui nós iremos receber o conteúdo do arquivo people.jsonacima em um ponto final, mula veria que Person.classé um objeto JSON anotada e que tinha recebido os dados JSON da fila JMS e executar a conversão.
JSON Global Mapper
Jackson executa mapeamentos através da ObjectMapper. Este é um objeto que pode ser configurado com outra configuração sobre como serialização de dados e definir mixinsque adicionar anotações para objetos que você não pode mudar diretamente. É possível definir um ObjectMapperglobal; um único mapeadorusado para todos os JSON transforma em sua aplicação. Isso não é necessário, uma vez Mulecria automaticamente um mapeadorde um transformador, mas usando um mapeadorglobal pode ser útil se você precisar configurar propriedades específicas sobre o mapeadorou uso mixins. Para criar um ObjectMappercompartilhada Adicione o seguinte ao seu arquivo de configuração mula:
<Json: mapeadorname= "myMapper">
<Json: mixinmixinClass= "org.mule.module.json.transformers.FruitCollectionMixin"
targetClass= "org.mule.module.json.transformers.FruitCollection" />
<Json: mixinmixinClass= "org.mule.module.json.transformers.AppleMixin"
targetClass= "org.mule.tck.testmodels.fruit.Apple" />
</ Json: mapeador>
Interceptando JSON transformações
Até agora discutimos como mula realiza transformações JSON automáticas. Às vezes você pode querer interceptar a transformação. Para isso basta criar um transformador com um retorno de método ou tipo de parâmetro de sua classe JSON:
@Transformer(SourceTypes= {InputStream.class})
pública Pessoa TOPERSON (String json, ObjectMappermapeador) lança JAXBException
{
return(Pessoa) mapper.readValue(em, Person.class);
}
A instância ObjectMapperquer é criado para você ou o contexto global para a sua aplicação é utilizada. Uma razão para isso seria a de retirar alguns elementos JSON e criar objetos a partir de um subconjunto do JSON recebido. Para mais informações sobre as transformações consulte a seção Usando Transformers.
JsonPath
Não há linguagem padrão atualmente para consultar gráficos de dados JSON, da mesma forma XPATH pode consultar documentos XML. Mulecriou uma sintaxe de consulta simples para trabalhar com dados JSON em Java, chamados JsonPath.
Esta sintaxe de consulta fornece uma maneira simples de navegar uma estrutura de dados JSON. Os seguintes dados JSON demonstra como usar consultas Caminho JSON:
{
"Name": "John Doe",
"Dob": "01/01/1970",
"endereço de e-mail":[
{
"Type": "casa",
"Endereço": "john.doe@gmail.com"
},
{
"Type": "trabalho",
"Endereço": "jdoe@bigco.com"
}
]
}
Para selecionar um uso entrada de criança:
1
nome
Para acessar dados de matriz, use colchetes com um valor de índice ou seja,
1
emailAddresses[0] / tipo
Ou em que o elemento de rota é uma matriz:
1
[0] / arrayElement
Além disso, as matrizes multi-dimensionaispodem ser acessados usando:
1
filtros [1] / init[1] [0]
Isso é raro, mas se um nome de propriedade Jsoncontém uma '/' o nome precisa besinglecitou isto é,
1
resultados / 'http: //foo.com'/value
JsonPathem expressões
JSON Path pode ser usado em expressões de mula para consultar cargas úteis de mensagens JSON para filtrar ou enriquecimento.
Por exemplo, para usar JSON Caminho para realizar roteamentobaseado em conteúdo:
<Choice>
<Quando a expressão = "emailAddresses[0] / type= 'home'" avaliador = "json">
<Acrescentar-string-transformadorde mensagem = "Endereço de casa é # [JSON: emailAddresses[0] / endereço]" />
</ Quando>
<Quando a expressão = "emailAddresses[0] / type= 'trabalho'" avaliador = "json">
<Acrescentar-string-transformadorde mensagem = "Endereço O trabalho é # [JSON: emailAddresses[0] / endereço]" />
</ Quando>
<Outro modo>
<Acrescentar-string-transformadorde mensagem = "Nenhum endereço de e-mail encontrado" />
</ Em contrário>
</ Choice>
O nome do avaliador de expressão é 'json', a expressão é qualquer expressão válida Path JSON. Note-se que ao fazer expressões booleanas, como no exemplo acima, alguns operadores são suportados:
Fim Obrigado
Nenhum comentário:
Postar um comentário