com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 33 path $.content
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
at com.google.gson.Gson.fromJson(Gson.java:932)
at com.google.gson.Gson.fromJson(Gson.java:897)
at com.google.gson.Gson.fromJson(Gson.java:846)
at com.xxl.job.core.util.GsonTool.fromJson(GsonTool.java:53)
at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:131)
at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:42)
at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 33 path $.content
at com.google.gson.stream.JsonReader.nextString(JsonReader.java:826)
at com.google.gson.internal.bind.TypeAdapters$16.read(TypeAdapters.java:402)
at com.google.gson.internal.bind.TypeAdapters$16.read(TypeAdapters.java:390)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
... 8 common frames omitted
`
Please answer some questions before submitting your issue. Thanks!
使用版本 2.2.0
问题: xxl-rpc json解析失败
2.2.0版本xxl-rpc调用api/registry结果返回json为
{ "code": 200, "msg": "", "content": {} }
结果显示xxl-rpc json解析失败。 完整信息是: `2020-07-09 17:25:01.905 ERROR 21564 --- [rRegistryThread] c.xxl.job.core.util.XxlJobRemotingUtil : xxl-rpc remoting (url=http://localhost:8400/xxl-job-admin/api/registry) response content invalid({"code":200,"msg":"","content":{}}).com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 33 path $.content at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226) at com.google.gson.Gson.fromJson(Gson.java:932) at com.google.gson.Gson.fromJson(Gson.java:897) at com.google.gson.Gson.fromJson(Gson.java:846) at com.xxl.job.core.util.GsonTool.fromJson(GsonTool.java:53) at com.xxl.job.core.util.XxlJobRemotingUtil.postBody(XxlJobRemotingUtil.java:131) at com.xxl.job.core.biz.client.AdminBizClient.registry(AdminBizClient.java:42) at com.xxl.job.core.thread.ExecutorRegistryThread$1.run(ExecutorRegistryThread.java:48) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 33 path $.content at com.google.gson.stream.JsonReader.nextString(JsonReader.java:826) at com.google.gson.internal.bind.TypeAdapters$16.read(TypeAdapters.java:402) at com.google.gson.internal.bind.TypeAdapters$16.read(TypeAdapters.java:390) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) ... 8 common frames omitted `
可能原因
由于AdminBizClient的registry方法结果json结果参数解析为String.class,导致content为空json解析为String失败
@Override public ReturnT<String> registry(RegistryParam registryParam) { return XxlJobRemotingUtil.postBody(addressUrl + "api/registry", accessToken, timeout, registryParam, String.class); }
请问这个问题怎么解决 @xuxueli?