Jackson no puebla todas las propiedades
Estoy trabajando en un ejemplo simple usandoJackson library
para convertir unjson
volver aJava object
pero veo que solo se están configurando algunas propiedades en mi objeto java en lugar de todas las propiedades.
Aquí está mi código:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import org.codehaus.jackson.map.ObjectMapper;
public class JsonTest {
public static void main(String[] args) throws FileNotFoundException, IOException {
StringBuffer buffer = new StringBuffer();
String data = "";
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("path-to-sample.json"));
while ((data = reader.readLine()) != null) {
buffer.append(data);
}
} finally {
if (reader != null) {
reader.close();
}
}
System.out.println(buffer.toString());
ObjectMapper mapper = new ObjectMapper();
Sample obj = mapper.readValue(buffer.toString(), Sample.class);
System.out.println(obj);
}
}
El programa Sample.java se ve así:
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonIgnoreProperties(ignoreUnknown = true)
public class Sample {
@JsonProperty("prop_1")
private String prop1;
private String prop2;
@JsonProperty("prop_3")
private String prop3;
private String prop4;
// Setters & Getters for the properties.
@Override
public String toString() {
return "Sample [prop1=" + prop1 + ", prop2=" + prop2 + ", prop3="
+ prop3 + ", prop4=" + prop4 + "]";
}
}
La cadena json de entrada en mi archivo es:
{
"prop_1": "1",
"prop2": "2",
"prop_3": "3",
"prop4": "4"
}
La salida de este programa es:
Sample [prop1=null, prop2=2, prop3=null, prop4=4]
Según mi programa, elprop1
yprop3
No debe ser nulo. No tengo claro dónde cometí el error.
Actualizar:
Si elimino el@JsonProperty
Anotación, entonces estoy recibiendo la excepción como:
Exception in thread "main" org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "prop_1" (Class Sample), not marked as ignorable
Estas son mis dependencias de archivo pom.xml:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>