Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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
Java Jackson:无法反序列化com.org.my_services.external_services.ifs.converter.InventoryPricePayload的实例超出启动_数组令牌_Java_Json_Spring_Jackson_Object Object Mapping - Fatal编程技术网

Java Jackson:无法反序列化com.org.my_services.external_services.ifs.converter.InventoryPricePayload的实例超出启动_数组令牌

Java Jackson:无法反序列化com.org.my_services.external_services.ifs.converter.InventoryPricePayload的实例超出启动_数组令牌,java,json,spring,jackson,object-object-mapping,Java,Json,Spring,Jackson,Object Object Mapping,我试图消耗的有效载荷看起来像 我有一个类列表,这些类应该映射到上面的JSON负载 存货价格有效载荷 最后将价格数据作为 我试着像这样测试这个 final ObjectMapper mapper = new ObjectMapper(); try { final InventoryPricePayload inventoryPricePayload = mapper.readValue(new File(getClass().getResource("/ge

我试图消耗的有效载荷看起来像

我有一个类列表,这些类应该映射到上面的JSON负载

存货价格有效载荷

最后将价格数据作为

我试着像这样测试这个

final ObjectMapper mapper = new ObjectMapper();
        try {
            final InventoryPricePayload inventoryPricePayload = mapper.readValue(new File(getClass().getResource("/getInventoryAndPrice.json").getPath()), InventoryPricePayload.class);
            System.out.println(inventoryPricePayload);
        } catch (final IOException e) {
           throw new RuntimeException("can not read resource :" + e.getMessage());
        }
我得到的失败如下:

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.742 sec <<< FAILURE! - in com.org.my_services.external_services.ifs.IFSManagerTest
testMockIfsClient(com.org.my_services.external_services.ifs.IFSManagerTest)  Time elapsed: 0.615 sec  <<< ERROR!
java.lang.RuntimeException: can not read resource :Can not deserialize instance of com.org.my_services.external_services.ifs.converter.InventoryPricePayload out of START_ARRAY token
 at [Source: /Users/harith/IdeaProjects/my_services/external_services/ifs/target/test-classes/getInventoryAndPrice.json; line: 1, column: 1]
    at com.org.my_services.external_services.ifs.MockIfsClient.getInventoryAndPrice(MockIfsClient.java:25)
    at com.org.my_services.external_services.ifs.IFSManager.getInventoryAndPrice(IFSManager.java:20)
    at com.org.my_services.external_services.ifs.IFSManagerTest.testMockIfsClient(IFSManagerTest.java:28)
问题:

我到底在哪里搞砸了?

根据Jackson see数据绑定与泛型,我做了以下工作,一切顺利

final List<InventoryPriceDetail> inventoryPriceDetails= mapper.readValue(new File(getClass().getResource("/getInventoryAndPrice.json").getPath()), new TypeReference<List<InventoryPriceDetail>>() {});
而不是使用

新类型引用{}

这有点难看,因为您还可以使用类实现


mapper.getTypeFactory.ConstructionCollectionTypeList.class,InventoryPriceDetail.class

个人意见:TypeReference使构造更具可读性。@daydreamer我想这是一个意见问题:
final ObjectMapper mapper = new ObjectMapper();
        try {
            final InventoryPricePayload inventoryPricePayload = mapper.readValue(new File(getClass().getResource("/getInventoryAndPrice.json").getPath()), InventoryPricePayload.class);
            System.out.println(inventoryPricePayload);
        } catch (final IOException e) {
           throw new RuntimeException("can not read resource :" + e.getMessage());
        }
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.742 sec <<< FAILURE! - in com.org.my_services.external_services.ifs.IFSManagerTest
testMockIfsClient(com.org.my_services.external_services.ifs.IFSManagerTest)  Time elapsed: 0.615 sec  <<< ERROR!
java.lang.RuntimeException: can not read resource :Can not deserialize instance of com.org.my_services.external_services.ifs.converter.InventoryPricePayload out of START_ARRAY token
 at [Source: /Users/harith/IdeaProjects/my_services/external_services/ifs/target/test-classes/getInventoryAndPrice.json; line: 1, column: 1]
    at com.org.my_services.external_services.ifs.MockIfsClient.getInventoryAndPrice(MockIfsClient.java:25)
    at com.org.my_services.external_services.ifs.IFSManager.getInventoryAndPrice(IFSManager.java:20)
    at com.org.my_services.external_services.ifs.IFSManagerTest.testMockIfsClient(IFSManagerTest.java:28)
final List<InventoryPriceDetail> inventoryPriceDetails= mapper.readValue(new File(getClass().getResource("/getInventoryAndPrice.json").getPath()), new TypeReference<List<InventoryPriceDetail>>() {});