tutorial - Convierta una cadena JSON en objeto en Java ME?
gson tutorial (14)
¿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?
Además de 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
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/
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.
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 resto se hará automáticamente
Para más información y para descargar
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");
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/"]");
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.
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/
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"));
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"));
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 sintaxis o error de procedimiento.JSONString.java
JSONString es una interfaz que permite a las clases implementar su serialización JSON.
Utiliza la biblioteca google https://code.google.com/p/google-gson/ para esto
public static <T> T getObject(final String jsonString, final Class<T> 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
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 page .
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.
Jackson para archivos grandes, GSON para archivos pequeños y JSON.simple para manejar ambos.