Método no JSON

132 views
Skip to first unread message

Bruno

unread,
May 12, 2015, 3:34:02 PM5/12/15
to jav...@googlegroups.com, Cejug
Olá Pessoal, 

Estou fazendo uma integração, que usa o banco de dados como meio de comunicação.

Quando preciso passar uma informação de um sistema para o outro, escrevo o seguinte na coluna "parâmetros" do banco:

{"pessoa":{"nome":"Bruno","rg":"99999999"}}

Dai, uma outra aplicação le essa linha e seta o objeto o nome e rg do objeto pessoa.

Até aqui, tudo bem, porem em determinado momento preciso passar um objeto do tipo Map.
Na minha aplicação que recebe esse Map, a maneira que eu seto a chave e o valor é usando 

meuMapa.put("chave","valor");

Ou seja, não consigo setar diretamente, tenho que usar o put.
Como faço para passar esse put e os valores usando esse formato json?

Atenciosamente,
_________________________
Bruno Santos Dumont
Skype: bruno.sdo

Tiago Ribeiro Filho

unread,
May 12, 2015, 3:47:46 PM5/12/15
to jav...@googlegroups.com, Cejug
Não entendi,  você quer passar um objeto do tipo map e  está na duvida se usa esse objeto setando chave e valor?

Poderia ser um pouco mais claro:?

Tiago Ribeiro Filho
Desenvolvedor Java

--
Você recebeu essa mensagem porque está inscrito no grupo "java.ce" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javace+un...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para jav...@googlegroups.com.
Acesse esse grupo em http://groups.google.com/group/javace.
Para mais opções, acesse https://groups.google.com/d/optout.

Charles Queiroz

unread,
May 12, 2015, 3:53:03 PM5/12/15
to JavaCE, Cejug
Um JSON já é um “objeto” no formato chave valor. 

Vamos lá as duvidas: 

1 - Você diz que usa o banco de dados como meio de comunicação. Eu acho isso uma ideia muito ruim, mas sendo verdade, por que vc envia um JSON pra outra aplicação se elas usam o mesmo banco? 
2 - Qual é o JSON final que a outra aplicação espera? Ou seja, supondo que vc consiga serializar esse mapa no seu JSON final, como deveria ficar? 

Não estou entendendo bem qual é o seu problema.

Atenciosamente,

Charles Queiroz


Dazen™ IT Services
Technology - Software Development 

cha...@dazen.com.br

Fortaleza - CE

Phone: +55 85 9933 1585


Charles Queiroz

unread,
May 12, 2015, 6:14:23 PM5/12/15
to jav...@googlegroups.com
Você está usando que tecnologia pra serializar os dados?

Atenciosamente,

Charles Queiroz


Dazen™  IT Services
Technology - Software Development 

cha...@dazen.com.br
Fortaleza - CE


On May 12, 2015, at 18:52, Bruno <brun...@gmail.com> wrote:

Quero saber como passo um objeto map no formato json

Bruno

unread,
May 12, 2015, 5:52:55 PM5/12/15
to jav...@googlegroups.com

Quero saber como passo um objeto map no formato json

Em 12/05/2015 16:47, "Tiago Ribeiro Filho" <tiagoc...@gmail.com> escreveu:

Bruno

unread,
May 12, 2015, 7:44:32 PM5/12/15
to jav...@googlegroups.com
Na verdade, eu nao fiz a aplicacao que ira ler do banco de dados, porem a forma como meu outro sistema (ibm bpms 8.5) ira receber essa informacao 
'e no formato json. No bpms tenho um servico que pode receber um Map como parâmetros de entrada.


Atenciosamente,
_________________________
Bruno Santos Dumont
+55 (85) 8112-1900
Skype: bruno.sdo

Hedley Luna

unread,
May 12, 2015, 8:23:22 PM5/12/15
to java.ce
Pelo que entendi, teu problema é passar um Map pra JSON. 
Como um Map é algo bem parecido com um JSON, você pode até implementar na mão mesmo. Pega o map.entrySet() e percorre transformando as entradas. Se quiser usar uma lib, pode usar o Jackson e aí é só pegar o ObjectMapper dele e fazer um objectMapper.writeValue(). 

Ythalo Rossy

unread,
May 12, 2015, 10:15:49 PM5/12/15
to javace
--
Ythalo Rossy Saldanha Lira
Analista de Sistemas Senior IV
Secretária da Fazenda do Estado do Ceará

Sun Certified Programmer for Java
http://yross.wordpress.com
http://about.me/ythalorossy

Charles Queiroz

unread,
May 13, 2015, 7:48:56 AM5/13/15
to JavaCE
Bom se o problema é só converter o map em um JSON, só precisa disso: 

new JSONObject(map);
Você converte o mapa em um JSON e pronto. 

Atenciosamente,

Charles Queiroz


Dazen™ IT Services
Technology - Software Development 

cha...@dazen.com.br

Fortaleza - CE


Phone: +55 85 9933 1585

Alisson Bruno Santos

unread,
May 13, 2015, 7:57:55 AM5/13/15
to jav...@googlegroups.com
Bruno, não entendi muito bem seu problema, mas se for quer serializar objetos java para json eu recomendo o jackson framework. Vou colocar um link de um exemplo pra você http://www.mkyong.com/java/how-to-convert-java-map-to-from-json-jackson/
Alisson Bruno
Desenvolvedor
(85) 9662-5454

Bruno

unread,
May 13, 2015, 8:21:20 AM5/13/15
to jav...@googlegroups.com
Seguinte, 

Meu problema não é no Java. 

Quero saber como representar meu objeto que é o do tipo Map em json.

Exemplo: Para um objeto "Pessoa" que tem os atributos "id" e "nome" represento assim:

{"pessoa":{"id":"23", "nome":"Bruno"}}     // << Como faço isso para um Map?

Não quero saber como faço em java ou outra linguagem, gostaria de saber como representar esse Map em json.

 

Atenciosamente,
_________________________
Bruno Santos Dumont
+55 (85) 8112-1900
Skype: bruno.sdo


Rafael Ponte

unread,
May 13, 2015, 8:24:19 AM5/13/15
to javace
Bruno,

Assim como JSON, um Map é representado através de chave-valor: {key:"chave", value:"valor"}
Rafael Ponte
TriadWorks | Formação Java
http://cursos.triadworks.com.br

Charles Queiroz

unread,
May 13, 2015, 8:33:21 AM5/13/15
to JavaCE
JSON é um MAP (a grosso modo). 

Então, Vamos supor que vc tem um map assim: 


map.put(“nome”, “Charles Queiroz”);
map.put(“email”, “cha...@dazen.com.br”);

Quando vc converter ele em JSON, fica: 

{“nome”:”Charles Queiroz”, “email”:”cha...@dazen.com.br”} 


É esse o seu problema? 

Atenciosamente,

Charles Queiroz


Dazen™ IT Services
Technology - Software Development 

cha...@dazen.com.br

Fortaleza - CE

Phone: +55 85 9933 1585


Bruno

unread,
May 13, 2015, 8:41:43 AM5/13/15
to jav...@googlegroups.com
Vejam a imagem.
Tentei fazer como o Rafael disse, mas ainda da um erro.

Inline image 1

Atenciosamente,
_________________________
Bruno Santos Dumont
+55 (85) 8112-1900
Skype: bruno.sdo


Marcelo Emanoel B. Diniz

unread,
May 13, 2015, 8:51:51 AM5/13/15
to jav...@googlegroups.com
Olá, Bruno.

O teu problema se resolve colocando as chaves entre aspas. 

{ "key": "value"}


[]'s
Marcelo Emanoel

Alexandre Nascimento

unread,
May 13, 2015, 8:57:59 AM5/13/15
to jav...@googlegroups.com
Tenta assim Bruno, 

  1. Map<String, Object> mapProp = new HashMap<String, Object>();
  2. mapProp.put("id", "23");
  3. mapProp.put("nome", "Bruno");
  4. Map<String, Object> mapObject = new HashMap<String, Object>();
  5. mapObject.put("pessoa", mapProp);
Atenciosamente,

Alexandre da Silva Nascimento

Alisson Bruno Santos

unread,
May 13, 2015, 9:11:39 AM5/13/15
to jav...@googlegroups.com
Cara faz como o Marcelo te falou ai que funciona.. 

"testMap" : {"key": "nome", "value" : "Bruno" }

Bruno

unread,
May 13, 2015, 9:13:58 AM5/13/15
to jav...@googlegroups.com
Tambem não resolve Marcelo.

Quando tento passar:

{"acao":"startProcess","nomeProcesso":"P00", "teste":{"key":"nome","value":"Bruno"}}
ou 
{"acao":"startProcess","nomeProcesso":"P00", "teste":[{"key":"nome","value":"Bruno"}]}

Retorna >> 
status:
"error",
exceptionType:
"com.ibm.bpm.wle.api.CouldNotSetPropertyException",
errorNumber:
"CWTBG0535E",
errorMessage:
"CWTBG0535E: Property 'value' could not be set on a variable of class 'Map'.",
errorMessageParameters:
[
-
"value",
"Map"
],
responses:
null


Se eu tentar passar {"acao":"startProcess","nomeProcesso":"P00", "teste":[{key:"nome",value:"Bruno"}]}

Retorna >> 
status:
"error",
exceptionType:
"com.ibm.bpm.wle.api.JSONParseErrorException",
errorNumber:
"CWTBG0536E",
errorMessage:
"CWTBG0536E: A JSON parsing error occurred while parsing the 'params' parameter. The error is 'Unexpected character 'k' on line 1, column 56' while parsing '{"acao":"startProcess","nomeProcesso":"P00", "teste":[{key:"nome",value:"Bruno"}]}'.",
errorMessageParameters:
[
-
"params",
"Unexpected character 'k' on line 1, column 56",
"{"acao":"startProcess","nomeProcesso":"P00", "teste":[{key:"nome",value:"Bruno"}]}"
],
responses:
null

Atenciosamente,
_________________________
Bruno Santos Dumont
+55 (85) 8112-1900
Skype: bruno.sdo


Fred Farias

unread,
May 13, 2015, 9:16:11 AM5/13/15
to jav...@googlegroups.com
Aparentemente seu json está num formato válido, porém o erro que dar é um caractere não esperado.

Por desencargo de consciência e teste, coloque key e value entre aspas: ... "key":"nome", "value":"Bruno"

A representação desse Json em Map seria assim:

Map<String, Object> //o Valor precisar ser um object pois você tem valores do tipo String e valor do tipo Map

mapExample.put("acao", "startProcess");
mapExample.put("nomeProcesso", "P00");

Você concorda que o valor para chave "testeMap" é outro Map/Json ?

Você precisa pegar o valor de testeMap e transformar em um objeto Map.

JSON jsonTesteMap = json.getParameter("testeMap");

mapPessoa.put("value", jsonTesteMap.getParameter("value"));

Esse código precisa de bastante ajuste, o que importante é que você analise a estrutura do dado, atente que você possui um Map dentro de outro.

Muito complexo essa representação do "testeMap", tipo você tem uma chave cujo valor é seria outra chave: "key": "nome".

Como evoluir isso? Por que não representar assim: "testeMap": {"nome": "Bruno"}

Dessa forma poderia de repente adicionar idade: "testeMap": {"nome": "Bruno", "idade": "20"}

Att,
Fred Farias


Fred Farias

unread,
May 13, 2015, 9:19:15 AM5/13/15
to jav...@googlegroups.com
Desculpem os erros de português, enviei sem querer antes de reler.

Marcelo Emanoel B. Diniz

unread,
May 13, 2015, 9:31:29 AM5/13/15
to jav...@googlegroups.com
Ao que parece esse framework que você está usando utiliza reflexão 
e procura por gets e sets na classe de acordo com os nomes das propriedades no json. 

Suponho que você vai precisar criar uma classe que representa o que você quer guardar no map. 
E crier gets e sets para as propriedades que você guardar.

Outra coisa que notei no teu segundo teste com o array é que novamente tu não colocou as chaves do mapa 
entre aspas.

Outra possibilidade é fazer a conversão do mapa para JSON diretamente antes de enviar para a integração e salvar ela como String.


[]'s
Marcelo Emanoel

Willker Gomes

unread,
May 13, 2015, 9:56:47 AM5/13/15
to jav...@googlegroups.com
Bruno,

Não testei aqui, mas creio que assim possa funcionar:

{"acao":"startProcess","nomeProcesso":"P00", "teste":[{"nome":"Bruno"}, {"idade":"24"}]}


--
Atenciosamente,

Willker Gomes

Moisés Batista dos Santos Filho

unread,
May 13, 2015, 10:54:49 AM5/13/15
to jav...@googlegroups.com
Bruno,

Testa aí o teu JSON pra ver se a formatação está de acordo com o que você espera receber:

cmilfont

unread,
May 13, 2015, 11:05:14 AM5/13/15
to jav...@googlegroups.com
Bruno, não conheço como funciona essa ferramenta, mas percebi que voce está passando o json na url, geralmente os frameworks passam no body do POST.
Tem que ver se a ferramenta aceita nested no json ou se somente plain caso for pela url mesmo.
Teoricamente deveria ser algo como ?event={'bla':{'key':'12'}}
Mas olha primeira se aceita o formato que voce quer passar.

Christiano Martins - http://www.milfont.org/

Rafael Uchôa

unread,
May 13, 2015, 12:40:32 PM5/13/15
to javace
Já tentou:

{"acao":"startProcess","nomeProcesso":"P00", "testeMap" : { "nome":"bruno", "id":"123123" }}

?

Rafael Uchôa
www.naskar.com.br


Bruno

unread,
May 14, 2015, 7:04:15 AM5/14/15
to jav...@googlegroups.com

Já sim, também não dá certo.

Bruno

unread,
May 14, 2015, 4:25:01 PM5/14/15
to jav...@googlegroups.com

Obrigado pessoal, mas acabei resolvendo de outra forma.

Matheus Fechine

unread,
May 14, 2015, 4:30:29 PM5/14/15
to Javace
Bruno, 

Poderia compartilhar a sua solução?
Pode ser que alguém tb esteja passando por este problema e ajudaria :)

Valeu!

Bruno

unread,
May 15, 2015, 9:47:06 AM5/15/15
to jav...@googlegroups.com
Matheus, 

Dentro da minha aplicação (ibm bpms) criei meu mapa e quando recebo esse mapa 
e transformo ele em Map.


Inline image 1

Atenciosamente,
_________________________
Bruno Santos Dumont
+55 (85) 8112-1900
Skype: bruno.sdo


Ythalo Rossy

unread,
May 21, 2015, 8:27:28 PM5/21/15
to javace

Curiosidade.

Qual linguagem está sendo utilizada?

Bruno

unread,
Jun 8, 2015, 2:23:05 PM6/8/15
to jav...@googlegroups.com
A linguagem mostrada no print é JS com a API do BPM da Ibm

Atenciosamente,
_________________________
Bruno Santos Dumont
+55 (85) 8112-1900
Skype: bruno.sdo


Reply all
Reply to author
Forward
0 new messages