Jackson füllt nicht alle Eigenschaften auf
Ich arbeite an einem einfachen Beispiel mitJackson library
um ein @ umzuwandejson
string zurück zuJava object
Es werden jedoch nur wenige Eigenschaften für mein Java-Objekt festgelegt, anstatt für alle Eigenschaften.
Hier ist mein Code:
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);
}
}
Das Programm Sample.java sieht folgendermaßen aus:
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 + "]";
}
}
Input json string in meiner Datei ist:
{
"prop_1": "1",
"prop2": "2",
"prop_3": "3",
"prop4": "4"
}
Die Ausgabe dieses Programms ist:
Sample [prop1=null, prop2=2, prop3=null, prop4=4]
Wie in meinem Programm beschrieben ist dasprop1
undprop3
sollte nicht null sein. Mir ist nicht klar, wo ich Fehler gemacht habe.
Aktualisieren
Wenn ich das @ entfer@JsonProperty
Anmerkung dann bekomme ich die Ausnahme als:
Exception in thread "main" org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "prop_1" (Class Sample), not marked as ignorable
Dies ist meine pom.xml-Datei Abhängigkeiten:
<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>