Convierta una cadena JSON en objeto en Java ME?

¿Hay alguna forma en Java / J2ME para convertir una cadena, como por ejemplo:

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

a una representación Objeto interno de la misma, en una línea de código?

Porque el método actual es demasiado tedioso:

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

Tal vez una biblioteca JSON?

Usé algunos de ellos y mi favorito es

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

La biblioteca es muy pequeña, por lo que es perfecta para J2ME.

Puede analizar JSON en un objeto Java en una línea 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")); 

La opción más simple es Jackson :

 MyObject ob = new ObjectMapper().readValue(jsonString, MyObject.class); 

Hay otras bibliotecas igualmente fáciles de usar (ya se mencionó a Gson); pero algunas opciones son más laboriosas, como la biblioteca org.json original, que requiere la creación de un “JSONObject” intermedio, incluso si no es necesario.

GSON es una buena opción para convertir objetos java en objetos json y viceversa.
Es una herramienta proporcionada por google.

para convertir el uso de json a objeto java: fromJson(jsonObject,javaclassname.class)
para convertir el objeto java al uso del objeto json: toJson(javaObject)
y el rest se hará automáticamente

Para más información y para descargar

Puede hacerlo fácilmente con Google GSON.

Supongamos que tiene una clase llamada Usuario con los campos usuario, ancho y alto, y desea convertir la siguiente cadena json en el objeto Usuario.

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

Puede hacerlo fácilmente, sin tener que emitir (teniendo en cuenta el comentario de nimcap;)), con el siguiente código:

 Gson gson = new Gson(); final User user = gson.fromJson(jsonString, User.class); 

Donde jsonString es la cadena JSON anterior.

Para obtener más información, consulte https://code.google.com/p/google-gson/

Usted tiene muchos analizadores JSON para Java :

  • JSONObject.java
    Un JSONObject es una colección desordenada de pares de nombre / valor. Su forma externa es una cadena envuelta en llaves con dos puntos entre los nombres y valores, y comas entre los valores y los nombres. La forma interna es un objeto que tiene los métodos get () y opt () para acceder a los valores por nombre, y los métodos put () para agregar o reemplazar valores por nombre. Los valores pueden ser cualquiera de estos tipos: Boolean, JSONArray, JSONObject, Number y String, o el objeto JSONObject.NULL.

  • JSONArray.java
    Un JSONArray es una secuencia ordenada de valores. Su forma externa es una cadena envuelta entre corchetes con comas entre los valores. La forma interna es un objeto que tiene métodos get () y opt () para acceder a los valores por índice, y métodos put () para agregar o reemplazar valores. Los valores pueden ser cualquiera de estos tipos: Boolean, JSONArray, JSONObject, Number y String, o el objeto JSONObject.NULL.

  • JSONStringer.java
    Un JSONStringer es una herramienta para producir rápidamente texto JSON.

  • JSONWriter.java
    Un JSONWriter es una herramienta para escribir rápidamente texto JSON en las transmisiones.

  • JSONTokener.java
    Un JSONTokener toma una cadena fuente y extrae los caracteres y las fichas de ella. Es utilizado por los constructores JSONObject y JSONArray para analizar cadenas fuente JSON.

  • JSONException.java
    Se genera una JSONException cuando se detecta una syntax o error de procedimiento.

  • JSONString.java
    JSONString es una interfaz que permite a las clases implementar su serialización JSON.

El sitio oficial de JSON es donde debes mirar. Proporciona varias bibliotecas que se pueden usar con Java, yo personalmente he usado esta, JSON-lib, que es una implementación del trabajo en el sitio, por lo que tiene exactamente la misma clase, métodos, etc. en esta página .

Si hace clic en los enlaces html allí puede encontrar lo que desee.

En breve:

para crear un objeto json y una matriz json, el código es:

 JSONObject obj = new JSONObject(); obj.put("variable1", o1); obj.put("variable2", o2); JSONArray array = new JSONArray(); array.put(obj); 

o1, o2, pueden ser tipos primitivos (long, int, boolean), Strings o Array.

El proceso inverso es bastante simple, me refiero a convertir una cadena en json object / array.

 String myString; JSONObject obj = new JSONObject(myString); JSONArray array = new JSONArray(myString); 

Para analizar correctamente, solo tiene que saber si está analizando una matriz o un objeto.

Utiliza la biblioteca google GSON para esto

 public static  T getObject(final String jsonString, final Class objectClass) { Gson gson = new Gson(); return gson.fromJson(jsonString, objectClass); } 

http://iandjava.blogspot.in/2014/01/java-object-to-json-and-json-to-java.html

Como muchos ya lo han indicado, una forma bastante simple de hacerlo usando JSON.simple como se muestra a continuación

 import org.json.JSONObject; String someJsonString = "{name:"MyNode", width:200, height:100}"; JSONObject jsonObj = new JSONObject(someJsonString); 

Y luego use jsonObj para tratar con el objeto JSON. por ejemplo, jsonObj.get (“nombre”);

Según el enlace a continuación, JSON.simple muestra eficiencia constante para archivos JSON pequeños y grandes

http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json/

JSON IO es, de lejos, la forma más sencilla de convertir una cadena JSON o una secuencia de entrada JSON a un objeto Java

Cadena a objeto Java
Object obj = JsonReader.jsonToJava("[\"Hello, World\"]");

https://code.google.com/p/json-io/

Esta es una pregunta antigua y json-simple ( https://code.google.com/p/json-simple/ ) podría ser una buena solución en ese momento, pero tenga en cuenta que el proyecto parece no estar activo por un tiempo.

Sugiero el Gson que ahora está alojado en: https://github.com/google/gson

Si el rendimiento es su problema, puede echar un vistazo a algunos puntos de referencia http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json/ que comparan.

Además de http://www.json.org , también puede implementar su propio analizador usando javacc y haciendo coincidir su gramática / esquema personal. Ver esta nota en mi blog: http://plindenbaum.blogspot.com/2008/07/parsing-json-with-javacc-my-notebook.html

He escrito una biblioteca que usa json.org para analizar JSON, pero en realidad creará un proxy de una interfaz para usted. El código / JAR está en code.google.com.

http://fixjures.googlecode.com/

No sé si funciona en J2ME. Como usa Java Reflection para crear proxies, estoy pensando que no funcionará. Además, actualmente tiene una gran dependencia de Google Collections que quiero eliminar y probablemente sea demasiado pesado para sus necesidades, pero le permite interactuar con sus datos JSON de la manera que está buscando:

 interface Foo { String getName(); int getWidth(); int getHeight(); } Foo myFoo = Fixjure.of(Foo.class).from(JSONSource.newJsonString("{ name : \"foo name\" }")).create(); String name = myFoo.getName(); // name now .equals("foo name"); 

Jackson para archivos grandes, GSON para archivos pequeños y JSON.simple para manejar ambos.

Simplemente crea un objeto Json en Java con la siguiente cadena Json. En tu caso

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

si lo anterior es tu cadena Json, simplemente crea un objeto Json con ella.

 JsonString ="{name:"MyNode", width:200, height:100}"; JSONObject yourJsonObject = new JSONObject(JsonString); System.out.println("name=" + yourJsonObject.getString("name")); System.out.println("width=" + yourJsonObject.getString("width"));