JacksonParser databind y la causa principal "Encontró archivo duplicado para APK"?
Estoy tratando de aprender a usar el analizador de jackson, para obtener un análisis más eficaz de los datos de json. Tengo estos archivos jar: Descargados desde esta página
jackson-core-2.2.0.jar jackson-annotations-2.2.0.jar jackson-databind-2.2.0.jar
Y en código, sólo intento analizar un json en una matriz de objetos:
- ¿Cómo extraigo la matriz de cadena de este objeto json?
- Android gson streaming analizador o android.util.jsonreader?
- Retrofit 2.0 java.lang.IllegalStateException: Se esperaba BEGIN_ARRAY pero era STRING
- Necesito descargar varias imágenes al directorio para poder acceder al contenido sin conexión
- Se esperaba BEGIN_OBJECT pero era BEGIN_ARRAY en la línea 1 columna 2 (edición pequeña)
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String json = ReadFromRaw(this, R.raw.json); ArrayList<Category> categories = null; try { ObjectMapper mapper = new ObjectMapper(); categories = mapper.readValue(json, mapper.getTypeFactory().constructCollectionType(List.class, Category.class)); // categories = mapper.readValue(json, new TypeReference<List<Category>>() {}); } catch (Exception e) { Log.e("MainActivity", "Error: " + e.getMessage()); } SimpleListView myList = (SimpleListView) findViewById(R.id.myList); myList.setAdapterWithItems(GetAdapter(categories)); }
No estoy seguro si es necesario, pero aquí está mi clase de Categoría también:
@JsonIgnoreProperties({ "DisplayPriority" }) public class Category { @JsonProperty("Id") private String categoryId; @JsonProperty("name") private String categoryName; public String getCategoryId() { return categoryId; } public void setCategoryId(String categoryId) { this.categoryId = categoryId; } public String getCategoryName() { return categoryName; } public void setCategoryName(String categoryName) { this.categoryName = categoryName; } }
Todo parece bien, no hay errores ni advertencias. Pero cuando intento compilar, da este error:
[2013-04-25 09:32:08 - Training - JacksonParser] Error generating final archive: Found duplicate file for APK: LICENSE Origin 1: C:\~\workspace\Training - JacksonParser\libs\jackson-core-2.2.0.jar Origin 2: C:\~\workspace\Training - JacksonParser\libs\jackson-databind-2.2.0.jar
Como busco este error en google, dice que hay alguna clase en común en estos archivos jar. Y no tengo ni idea de qué hacer … ¿Hay algo que hago mal? ¿O hago algo que falta?
Gracias de antemano, cualquier ayuda es apreciada.
- Cómo pasar el objeto JSON a una nueva actividad
- Cómo analizar este JSON Array en android
- Saltos de línea con WCF, JSON y un cliente que no sea Windows
- ¿Cómo obtener valores de Internet y una matriz String y pasarla a una vista de cuadrícula en Android?
- Creación de JSONObject de cadena en JAVA (org.json)
- Gson - Igual nombre de campo, diferentes tipos
- ¿Existe un límite de longitud de la clave (cadena) en el objeto JS?
- Cómo comprimir JSON con gzip en Rails para Android?
Tengo el mismo problema. Por lo tanto, uso la versión antigua.
Jackson-core-asl-1.9.12.jar
Jackson-mapper-asl-1.9.12.jar
Puede descargar desde "Latest stable 1.x version" de la misma página.
Este problema se ha informado de la versión 2.2.0, consulte este problema ; Pero debe resolverse en 2.2.1.
EDIT: resulta que el problema principal es que estos archivos deben estar ubicados bajo META-INF/
in jar; Si es así, no hay conflicto. Y esto es lo que 2.2.1 hará, una vez que se libera.
Tipo de un dolor, pero no es tan malo para reconstruir los frascos manualmente.
git clone git://github.com/FasterXML/jackson-core.git git clone git://github.com/FasterXML/jackson-databind.git cd jackson-core git checkout jackson-core-2.2.0b # not sure what the "b" is about mv src/main/resources/NOTICE src/main/resources/META-INF/ mv src/main/resources/LICENSE src/main/resources/META-INF/ mvn install # jar will be at target/jackson-core-2.2.0.jar cd ../jackson-databind git checkout jackson-databind-2.2.0 mv src/main/resources/NOTICE src/main/resources/META-INF/ mv src/main/resources/LICENSE src/main/resources/META-INF/ mvn install # jar will be at target/jackson-databind-2.2.0.jar
Le suspiro. Que dolor.
EDIT : Resulta que necesita anotaciones para hacer la mayoría de las cosas. Ese ejercicio se deja para el lector. También encontré que puedes descargar los tarros para la nueva versión (fija) en Maven .
Como Steve dice en su última edición, puedes descargar los tarros más nuevos de Maven: http://repo1.maven.org/maven2/com/fasterxml/jackson/core/