Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Json解析为JavaBean_Java_Json_Exiftool - Fatal编程技术网

将Json解析为JavaBean

将Json解析为JavaBean,java,json,exiftool,Java,Json,Exiftool,我正在尝试解析由Exiftool生成的Json文件,如下所示: [{ "SourceFile": "videos/XaviHernandez.flv", "ExifTool": { "ExifToolVersion": 8.22 }, "System": { "FileName": "XaviHernandez.flv", "Directory": "videos", "FileSize": "16 MB", "FileModifyDate

我正在尝试解析由Exiftool生成的Json文件,如下所示:

[{
  "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"
  }
}]
在具有此结构的Java bean中:

public class MetadataContentBean {
    ExifToolBean exiftoolBean;
    String SourceFile;
    FileBean fileBean;
    SystemBean systemBean;
//Getters and setter
}
我的java代码如下:

    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);
但我得到了这个错误:

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'
我已经检查了几个论坛,但解决办法是这样,所以我不知道为什么我没有得到结果

有什么想法吗

ObjectMapper mapper = new ObjectMapper();
MetadataContentBean meta= mapper.readValue(metadatacontent.toString(), MetadataContentBean.class);
在这个meta中是所有的信息

在这个元中是所有的信息

问题是混合和可互换的库

@布兰卡回答了杰克逊的问题。下面是
net.sf.json
备选方案:

JSONArray json = (JSONArray) JSONSerializer.toJSON(jsonTxt);
JSONObject metadatacontent = json.getJSONObject(0);
MetadataContentBean meta = (MetadataContentBean) JSONObject.toBean(metadatacontent, MetadataContentBean.class);
NoSuchMethodException:Unknown属性'ExifTool'
被抛出,因为我想它需要公共字段或setter。

这个问题混合了可交换的库

@布兰卡回答了杰克逊的问题。下面是
net.sf.json
备选方案:

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

NoSuchMethodException:Unknown属性“ExifTool”
被抛出,因为我想它需要公共字段或设置程序。

有一个很好的解决方案example@CoolAJ86-你提到的链接已断开。有一个好的example@CoolAJ86-你提到的链接已断开。