Frage

Ich versuche, eine Json-Datei wie folgt zu analysieren, die durch Exiftool:

[{
  "SourceFile": "videos/XaviHernandez.flv",
  "ExifTool": {
    "ExifToolVersion": 8.22
  },
  "System": {
    "FileName": "XaviHernandez.flv",
    "Directory": "videos",
    "FileSize": "16 MB",
    "FileModifyDate": "2010:06:17 09:57:21+02:00",
    "FilePermissions": "rw-r--r--"
  },
  "File": {
    "FileType": "FLV",
    "MIMEType": "video/x-flv"
  }
}]

In einem Java-Bean mit dieser Struktur:

public class MetadataContentBean {
    ExifToolBean exiftoolBean;
    String SourceFile;
    FileBean fileBean;
    SystemBean systemBean;
//Getters and setter
}

Ihr Java-Code ist dies:

    InputStream is = this.getClass().getClassLoader().getResourceAsStream(filename);
    String jsonTxt = IOUtils.toString(is);
    JSONArray json = (JSONArray) JSONSerializer.toJSON(jsonTxt);
    JSONObject metadatacontent = json.getJSONObject(0);
    ObjectMapper mapper = new ObjectMapper();
    MetadataContentBean meta = new MetadataContentBean();
    mapper.readValue(metadatacontent.toString(), MetadataContentBean.class);
    meta= (MetadataContentBean) JSONObject.toBean(metadatacontent, MetadataContentBean.class);

Aber ich diesen Fehler:

net.sf.json.JSONException: java.lang.NoSuchMethodException: Unknown property 'ExifTool'
    at net.sf.json.util.PropertySetStrategy$DefaultPropertySetStrategy.setProperty(PropertySetStrategy.java:45)
    at net.sf.json.JSONObject.setProperty(JSONObject.java:1477)
    at net.sf.json.JSONObject.toBean(JSONObject.java:468)
    at net.sf.json.JSONObject.toBean(JSONObject.java:253)
    at com.playence.parser.JSon.Parser(JSon.java:66)
    at com.playence.parser.JSon.main(JSon.java:28)
Caused by: java.lang.NoSuchMethodException: Unknown property 'ExifTool'

Ich habe in mehreren Foren geprüft, aber die Lösung ist dies, damit ich weiß nicht, warum ich Ergebnisse nicht bekommen.

Jede Idee?

War es hilfreich?

Lösung

ObjectMapper mapper = new ObjectMapper();
MetadataContentBean meta= mapper.readValue(metadatacontent.toString(), MetadataContentBean.class);

In dieser Meta sind alle Informationen

Andere Tipps

Die Frage Mixe com.fasterxml.jackson und net.sf.json austauschbare Bibliotheken.

gab @Blanca Antwort für Jackson. Und hier ist die net.sf.json Alternative:

JSONArray json = (JSONArray) JSONSerializer.toJSON(jsonTxt);
JSONObject metadatacontent = json.getJSONObject(0);
MetadataContentBean meta = (MetadataContentBean) JSONObject.toBean(metadatacontent, MetadataContentBean.class);

wurde die NoSuchMethodException: Unknown property 'ExifTool' geworfen, weil PropertySetStrategy. STANDARD öffentliche Bereiche oder Setter erfordert, schätze ich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top