Джексон не заселяет все свойства
Я работаю над простым примером, используяJackson library
преобразоватьjson
вернитесь кJava object
но я вижу, что только немногие свойства устанавливаются для моего объекта Java вместо всех свойств.
Вот мой код:
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);
}
}
Программа Sample.java выглядит следующим образом:
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 + "]";
}
}
Введите строку JSON в моем файле:
{
"prop_1": "1",
"prop2": "2",
"prop_3": "3",
"prop4": "4"
}
Выход этой программы:
Sample [prop1=null, prop2=2, prop3=null, prop4=4]
Согласно моей программеprop1
а такжеprop3
не должно быть нулевым. Мне не ясно, где я допустил ошибку.
Обновить:
Если я удалю@JsonProperty
аннотации, то я получаю исключение как:
Exception in thread "main" org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "prop_1" (Class Sample), not marked as ignorable
Это мои зависимости файла 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>