Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

Ouverte
#163 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

@15666668904 y travaille déjà.

Depuis le 5/4/2026.

  • #181 par @15666668904 — ouverte

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
38/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
java
Domaine
api

Piste de recherche

Commencez par UnmarshalRespUtil.unmarshalResp, appelé depuis ApprovalService$ExternalInstance.create pour /open-apis/approval/v4/external_instances. Suivez la manière dont le corps de la réponse HTTP est traité lorsque Gson lève JsonSyntaxException, puis vérifiez que les échecs préservent ou consignent le contenu de la réponse reçue au lieu d’exposer uniquement l’erreur de désérialisation.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

背景
需要将自研系统中的审批流数据同步到飞书审批中心。

资料
使用的SDK:com.larksuite.oapi:oapi-sdk:2.0.20

报错
com.google.gson.JsonSyntaxException: 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:226)
at com.google.gson.Gson.fromJson(Gson.java:922)
at com.google.gson.Gson.fromJson(Gson.java:887)
at com.google.gson.Gson.fromJson(Gson.java:836)
at com.google.gson.Gson.fromJson(Gson.java:808)
at com.lark.oapi.core.utils.UnmarshalRespUtil.unmarshalResp(UnmarshalRespUtil.java:22)
at com.lark.oapi.service.approval.v4.ApprovalService$ExternalInstance.create(ApprovalService.java:587)

期望
先看代码
// 反序列化
CreateExternalInstanceResp resp = UnmarshalRespUtil.unmarshalResp(httpResponse, CreateExternalInstanceResp.class);
if (resp == null) {
log.error(String.format(
"%s,callError,req=%s,respHeader=%s,respStatusCode=%s,respBody=%s,", "/open-apis/approval/v4/external_instances"
, Jsons.DEFAULT.toJson(req), Jsons.DEFAULT.toJson(httpResponse.getHeaders()),
httpResponse.getStatusCode(), new String(httpResponse.getBody(),
StandardCharsets.UTF_8)));
throw new IllegalArgumentException("The result returned by the server is illegal");
}
UnmarshalRespUtil.unmarshalResp方法在执行时并没有做异常处理,导致CreateExternalInstanceResp resp = UnmarshalRespUtil.unmarshalResp(httpResponse, CreateExternalInstanceResp.class);执行时,直接抛出异常,不会继续向下执行,并打印出返回结果日志。

希望完善这个BUG,抛出异常可以,但应该要输出返回结果是什么,而不是JSON序列化的错误。

Langage dominant
Java
Étoiles
314
Forks
116
Merge moyen
33 min
PR mergées (30 j)
4

Préparer son environnement

Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de larksuite/oapi-sdk-java

Toutes les issues de larksuite/oapi-sdk-java

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.