Converter uma string JSON em objeto em Java ME?

Existe uma maneira em Java/J2ME de converter uma string, como por exemplo:

{name:"MyNode", width:200, height:100}

a uma representação interna do mesmo objecto, numa linha de código?

Porque o método actual é demasiado enfadonho:

Object n = create("new");
setString(p, "name", "MyNode");
setInteger(p, "width", 200);
setInteger(p, "height", 100);

Talvez uma biblioteca do JSON?

Solução

Eu usei alguns deles e o meu favorito é,

http://code.google.com/p/json-simple/

A biblioteca é muito pequena, por isso é perfeita para J2ME.

Você pode analisar o JSON em objetos Java em uma linha como esta,

JSONObject json = (JSONObject)new JSONParser().parse("{\"name\":\"MyNode\", \"width\":200, \"height\":100}");
System.out.println("name=" + json.get("name"));
System.out.println("width=" + json.get("width"));
Comentários (3)

Você tem muitos JSON parsers para Java:

  • JSONObject.java Um JSONObject é uma colecção desordenada de pares nome/valor. A sua forma externa é um cordel envolto em braceletes encaracolados com colões entre os nomes e valores, e vírgulas entre os valores e nomes. A forma interna é um objeto com métodos get() e opt() para acessar os valores pelo nome, e métodos put() para adicionar ou substituir valores pelo nome. Os valores podem ser de qualquer um destes tipos: Boolean, JSONArray, JSONObject, Number, and String, ou o objeto JSONObject.NULL.

  • JSONArray.java Um JSONArray é uma sequência ordenada de valores. Sua forma externa é uma cadeia envolta em parênteses rectos com vírgulas entre os valores. A forma interna é um objeto tendo métodos get() e opt() para acessar os valores por índice, e métodos put() para adicionar ou substituir valores. Os valores podem ser de qualquer um destes tipos: Boolean, JSONArray, JSONObject, Number, and String, ou o objeto JSONObject.NULL.

  • JSONStringer.java Um JSONStringer é uma ferramenta para produzir rapidamente o texto JSON.

  • JSONWriter.java Um JSONWriter é uma ferramenta para escrever rapidamente o texto JSON em fluxos.

  • JSONTokener.java Um JSONTokener pega uma cadeia de caracteres e extrai caracteres e fichas dela. Ele é usado pelos construtores do JSONObject e JSONArray para analisar as cadeias-fonte do JSON.

  • JSONException.java Uma JSONException é lançada quando um erro de sintaxe ou de procedimento é detectado.

  • JSONString.java O JSONString é uma interface que permite às classes implementar a sua serialização JSON.

Comentários (6)

Além de www.json.org você também pode implementar o seu próprio parser usando javacc e combinando a sua gramática/esquema pessoal. Veja esta nota no meu blog : http://plindenbaum.blogspot.com/2008/07/parsing-json-with-javacc-my-notebook.html

Comentários (2)