【问题标题】:Google Vision API Response Parsing in java (ClassCastException)Java 中的 Google Vision API 响应解析(ClassCastException)
【发布时间】:2018-02-08 10:28:43
【问题描述】:

解析 Google Vision API 响应时出现 ClassCastException

请求

visionApiRequest {"requests":[{"features":[{"maxResults":2,"type":"LOGO_DETECTION"}],"image":{"source":{"imageUri":"https://www.tenfold.com/wp-content/uploads/2017/05/icon-sap-hybris.png"}}}]}

回复

visionApiResponse {  "responses": [    {      "logoAnnotations": [        {          "mid": "/m/0gwz218",          "description": "Hybris",          "score": 0.17361198,          "boundingPoly": {            "vertices": [              {                "x": 65,                "y": 58              },              {                "x": 114,                "y": 58              },              {                "x": 114,                "y": 120              },              {                "x": 65,                "y": 120              }            ]          }        }      ]    }  ]}

解析代码sn-p:

String resp = "";
    while (httpResponseScanner.hasNext()) {
        final String line = httpResponseScanner.nextLine();
        resp += line;
        //System.out.println(line); // alternatively, print the line of response
    }
    System.out.println("visionApiResponse "+resp);


    BatchAnnotateImagesResponse annotateImagesResponse = new ObjectMapper().readValue(resp, BatchAnnotateImagesResponse.class);

    List<AnnotateImageResponse> responses = annotateImagesResponse.getResponses();

    for (AnnotateImageResponse res : responses) {

        System.out.println(res);
    }

行异常:for (AnnotateImageResponse res :responses) {

线程“main”java.lang.ClassCastException 中的异常:java.util.LinkedHashMap 无法转换为 com.google.api.services.vision.v1.model.AnnotateImageResponse

依赖:google-api-services-vision-v1-rev370-1.23.0.jar

如何处理?

【问题讨论】:

    标签: java google-api objectmapper jsonparser vision-api


    【解决方案1】:

    使用 com.fasterxml.jackson.core.type.TypeReference

    解决
    List<AnnotateImageResponse> responses = mapper.convertValue(annotateImagesResponse.getResponses(), new TypeReference<List<AnnotateImageResponse>>() {
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      相关资源
      最近更新 更多