【问题标题】:Unable to read data from CBOR File无法从 CBOR 文件中读取数据
【发布时间】:2015-03-04 20:11:01
【问题描述】:

我的目标是使用文件将 TargetModel 类的实例存储为 CBOR 格式。如果有任何其他方法,它对我有用!

我正在使用Jackson CBOR API 来写入和读取数据并将数据写入文件。

我正在使用 ObjectMapper 类的 writeValue 方法来编写 TargetModel 的实例,但是当我尝试读取数据时,当我尝试使用 ReadValue 读取对象时,它会抛出 JsonMappingException

请帮帮我!因此,我遇到了严重的麻烦。

Mainclass.java

package cborStoring;

public class MainClass {

public static void main (String[] args) throws Exception{

    String targetfilePath = "/home/vaio/Documents/mySampleFile";

    CBORWriter myCborWriter = new CBORWriter();

    TargetModel sampleModel = new TargetModel("rajat", "dfdsf");
//  TestClass sampleModel = new TestClass();

    Object inputObject = (Object)sampleModel;


    myCborWriter.writeObject(inputObject, targetfilePath);

    CBORReader myCborReader = new CBORReader();
    Object readObj = myCborReader.readObject(targetfilePath);

    TargetModel myModel = (TargetModel)readObj;
//  TestClass myModel = (TestClass)readObj;

    System.out.println("Program Ends!");

}
}

CBORWriter.java

package cborStoring;

public class CBORWriter {

public CBORWriter(){

}

public void writeObject(Object inputObject, String targetfilePath) throws Exception{

    FileOutputStream fos = new FileOutputStream(targetfilePath, true);

    if (!(new File(targetfilePath)).exists())
        (new File(targetfilePath)).createNewFile();

    CBORFactory f = new CBORFactory();
    ObjectMapper mapper = new ObjectMapper(f);

    mapper.writeValue(fos,inputObject);


    fos.close();
}

}

CBORReader.java

package cborStoring;

public class CBORReader {

public CBORReader(){

}

public Object readObject(String targetFilePath) throws Exception{

    FileInputStream fis = new FileInputStream(targetFilePath);

    CBORFactory f = new CBORFactory();

    ObjectMapper myMapper = new ObjectMapper(f);

    CBORParser myCborParser = f.createParser(fis);

    //Object readObject = myMapper.readValue(myCborParser, Object.class);
    //Object readObject = myMapper.readValue(myCborParser, TargetModel.class); : This does NOT Work throws JSONMappingException

    Object readObject = myMapper.readValue(myCborParser, TargetModel.class);

    return readObject;

}

}

【问题讨论】:

  • 请包含异常的实际文本;类型本身不会有太大帮助。

标签: java json data-binding jackson


【解决方案1】:

我不知道根本问题是什么,但代码可以简化很多,如下所示:

ObjectMapper 映射器 = 新 ObjectMapper(new CBORFactory()); mapper.writeValue(file, objectToWrite); TargetModel 结果 = mapper.readValue(file, TargetModel.class);

而且单独构造解析器或生成器通常没有多大意义。 另外,请确保使用最新的可用版本; 2.5.3 到此为止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多