我使用Deepl翻译HTML文本。如果我的HTML中有一个.gif文件,这是可以的,但是如果我使用.jpg,我会得到以下错误。我知道Deepl在他的库中使用gson,但不知道如何解决它,我想知道是否有Deepl的人知道这个问题?我使用Deepl java lib。
有预先欢迎的解决方案吗?
代码中的错误位置:
boolean failed = false;
String translationResult = "";
try
{
TextResult result = translator.translateText( text, source, target, translationOptions );
translationResult = result.getText( );
}
catch (IllegalStateException | JsonSyntaxException exception)
{
failed = true;
//...
exception.printStackTrace( );
Show.error( "failded"+ exception.getMessage( ) +"\n"+ exception.getCause( ) );
}
if(failed) {
Show.error( "failded" );
}误差
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
13/10/2022 10:22:45,483 [AWT-EventQueue-0] ERROR [JBroker] User Message: faildedjava.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:225)
at com.google.gson.Gson.fromJson(Gson.java:991)
at com.google.gson.Gson.fromJson(Gson.java:956)
at com.google.gson.Gson.fromJson(Gson.java:905)
at com.google.gson.Gson.fromJson(Gson.java:876)
at com.deepl.api.parsing.Parser.parseErrorMessage(Parser.java:47)
at com.deepl.api.Translator.checkResponse(Translator.java:769)
at com.deepl.api.Translator.translateText(Translator.java:174)
at com.deepl.api.Translator.translateText(Translator.java:110)
at com.upsilon.screens.translator.DeeplTranslator.translate(DeeplTranslator.java:75)发布于 2022-10-13 10:08:07
我是DeepL Java库的维护者。
这个问题似乎是由Java客户机中的一个bug引起的: HTTP响应被假定为有效的JSON,并且由于响应无效而引发此异常。我将对客户端进行修复,并在发布后进行更新。
编辑19.10.2022:在v0.2.1中修复了导致引发JsonSyntaxException的错误,但是底层问题仍然未知。
发布于 2022-10-13 18:54:51
正如丹尼尔·琼斯提到的那样,Deepl打算修复它是一个错误。
为了解决这个问题,直到最终的Deepl解决方案,我做了以下工作。
Map<String,String> imageTagMap = new HashMap();
HTML text中提取出所有的<img src ="" />标记,并将它们放入一个哈希映射中,其中一个动态创建的<ignoreImage> image1</ignoreImage>标记作为键,原始的<img src ="" />标记作为值<img src ="" />HTML text中的
<ignoreImage>image1</ignoreImage>标记替换了所有的<img />标记imageTagMap .将<ignoreImage>image1</ignoreImage>标记替换为原始标记。
我认为这个解决方案也可以在Deepl java lib中使用,以避免不必要的图像通过网络传输到他们的服务器。
https://stackoverflow.com/questions/74053063
复制相似问题