当前位置: 首页 > 知识库问答 >
问题:

json postman关于post image及其编码image的问题

陆俭
2023-03-14
public class Image {

    @Id
    private String id;

    private String userId;

    private byte[] image;    

    private String extension;

    private String text;
} /with getters and setter and constructors
 @RequestMapping(value = "ocr/v1/upload", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
    public Status doOcr(@RequestBody Image image) throws Exception {
        try {
ByteArrayInputStream bis = new ByteArrayInputStream (Base64.decodeBase64 (image.getImage()));
            Tesseract tesseract = new Tesseract(); // JNA Interface Mapping
            String imageText = tesseract.doOCR(ImageIO.read(bis));
            image.setText(imageText);
            repository.save(image);
            LOGGER.debug("OCR Result = " + imageText);
        } catch (Exception e) {
     LOGGER.error("TessearctException while converting/uploading image: ", e);
            throw new TesseractException();
        }
        return new Status("success");    }
    {   
        "image": {  
            "userId": "arun0009",   
            "extension": ".png",    
            "text": "WlgSmI3XGrnq31Uy6Vfnuo/qnHz1K8Z1+e4flJXk"
        }
    }
    @Test
    public void testDoOcr() throws IOException 
    {
    Map<String, String> headers = new HashMap<String, String>();
    headers.put("Accept", MediaType.APPLICATION_JSON_VALUE);
    headers.put("Content-Type", MediaType.APPLICATION_JSON_VALUE);

        Image image = new Image();
        InputStream inputStream = ClassLoader.getSystemResourceAsStream("eurotext.png");
        image.setUserId("arun0009");
        image.setExtension(".png");
        image.setImage(Base64.encodeBase64(IOUtils.toByteArray(inputStream)));
        String response = given().contentType("application/json").headers(headers).body(image).when().post("http://localhost:8080/ocr/v1/upload").then()
            .statusCode(200).extract().response().body().asString();
        System.out.println(response);
    }

“status”:400,“error”:“bad request”,“message”:“JSON parse error:无法从START_ARRAY令牌反序列化com.tess4j.rest.model.image实例;嵌套异常是com.fasterxml.jackson.databind.exc.mismatchedinputexception:无法从START_ARRAY令牌反序列化com.tess4j.rest.model.image实例\n在[源:(PushbackInputStream);行:1,列:1]”,“

共有1个答案

杨昆
2023-03-14

我真的认为你的问题是转化。尝试使用类似的注释来忽略JSON中没有传递的字段:

@JsonIgnore
@JsonProperty(value = "user_password")
public String userPassword;

引用:当从Spring MVC作为JSON发送时,动态地忽略Java对象中的字段。

编辑

 类似资料:
  • Cassandra源代码是最新的,它是从git@github.com: apache/cassandra.git.克隆的 JDK版本是1.8.0_05 操作系统:Linux 3.13.0-62-generic#102 Ubuntu SMP 后来,我尝试使用不同的JDK版本编译它,发现jdk1.8。0_11仍然有同样的问题,但是从jdk1.8开始。0_20,这个问题已经修复。 我想问是什么导致了这个

  • 前言 时间戳是很多应用系统,特别是加密货币开发设计中非常重要的元素。各种语言都提供了相应的时间处理函数,以前直接拿来就用了,也没有发现什么问题。但是在时间处理上,开发语言核心模块提供的个别Api并没有完全延续人类习惯。在Javascript语言里,有一个Date类的函数就非常奇葩,网络上很多文档的举例都是错误的,因此需要简单总结一下。 这似乎不是什么大问题,但是从stackoverflow.com

  • 我是android新手,正在处理一个广播互联网连接状态的应用程序。我使用了一个不推荐使用的方法isConnectingOrConnected()。我无法修复我的代码,它令人困惑。请查看我的代码并帮我解决问题。真心感谢任何帮助 这是我的连接接收器代码 这是我的主要活动

  • 本文向大家介绍JAVA及相关字符集编码问题研究分享,包括了JAVA及相关字符集编码问题研究分享的使用技巧和注意事项,需要的朋友参考一下 下面本文将针对以上几点问题进行描述讨论,我们就以“中文”两个字为例来说明,查找相关资料可知“中文”的GB2312编码是“d6d0 cec4”,为Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"。(注意,“中文”这两个字没有i

  • 据我所知,Java中的String concatenation""运算符是使用Stringbuilder实现的,例如: 内部编译为: 所以我尝试了这样的东西: 接下来,我使用==运算符相互测试了这些。结果主要是我所期望的:foo2和foo4没有为任何其他字符串返回“==”。 但是,fo3==fo1返回true。这是什么原因?StringBuilder类的toString方法内部调用“new Str

  • 我很难理解领导者、追随者机制是如何工作的,比如说,我正在构建一个分布式应用程序,其中有2个主节点、6个从节点和3个zookeeper节点,其中一个zookeeper节点是领导者,两个主节点中的1个是活动的,并连接到zookeeper领导者。 我的问题是 > 当管理员节点死亡时,是否会发生领导者选举机制?以及它将如何影响我们的主人,我们的主人是否会与新当选的领导人连接? 如果我们的应用程序的主节点死