/ / Cambio de biblioteca de org.json a Jackson para analizar JSON - java, android, json, parsing, jackson

Cambiando la biblioteca de org.json a Jackson para analizar JSON - java, android, json, parsing, jackson

He estado usando la organización de acciones.json library y estoy familiarizado con esto. Ahora quiero usar la biblioteca Jackson por razones de rendimiento, pero me cuesta adaptarme a lo que parece un marco muy diferente. Tome el siguiente JSON:

{"result":[[{"usUserName":"FRED","usActive":true},{"usUserName":"JIM","usActive":true},{"usUserName":"DAVID","usActive":true}]]}

Con org.json estoy analizando esto de la siguiente manera:

try {
JSONArray jsonRecordset = response.getJSONArray("result").getJSONArray(0);
JSONObject jsonFirstRecord = jsonRecordset.getJSONObject(0);
Log.i("myloginfo", jsonFirstRecord.getString("usUserName"));
} catch (JSONException e) {
e.printStackTrace();
}

Me gustaría replicar esto con Jackson pero no puedoVea a dónde ir, ya que se ve muy diferente. Mi JSON proviene de un servicio web sobre el que no tengo control. Los datos anteriores son solo para ilustración, mis datos reales son mucho más grandes, por lo tanto, quiero el mejor rendimiento.

Respuestas

1 para la respuesta № 1

La forma habitual es que, en lugar de cortar y cortar manualmente las cosas, defina una clase Java (o varias clases) que tenga una estructura compatible con JSON. Al igual que:

public class Response {
public UserInfo[][] result;
}
public class UserInfo {
public String usUserName;
public boolean usActive;
}

ObjectMapper mapper = new ObjectMapper(); // must reuse for good performance
Response resp = mapper.readValue(jsonInput, Response.class);
// and use "resp" however you want, now has the expected data.

También es posible usar Jackson de la misma manera quejson.org, con el llamado Modelo de árbol; para eso puedes consultar tutoriales. Funciona mejor cuando los datos no tienen una buena estructura de objetos (es decir, no fueron diseñados para ser fácilmente accesibles desde lenguajes OO), o si solo necesita un pequeño fragmento de documentos grandes.