议转换报错

Blade 未结 2 44

一、该问题的重现步骤是什么?

  1. 协议转换报错,说我格式不对

  2. image.png

  3. image.png

  4. image.png


二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。

2025-09-26 12:21:06.798 DEBUG 13756 --- [  biz-worker-34] o.s.i.b.l.l.BladeMqttMessageListener     : clientId:mqttx_327f6f83_1758860081000 topic:/yywl/sys/ez7gil8efwg1/esp_8266/thing/event/property/post payload:{"temperature":27.4,"humidity":75.7}

2025-09-26 12:21:06.799 DEBUG 13756 --- [  biz-worker-34] o.s.i.b.l.l.BladeMqttMessageListener     : clientId:mqttx_327f6f83_1758860081000 topic:/yywl/sys/ez7gil8efwg1/esp_8266/thing/event/property/post payload:{"id":"b56ee8a3d8b025ad065efbc680982e20","version":"1.0","method":"thing.event.property.post","params":{"temperature":27.4,"humidity":75.7}}

2025-09-26 12:21:06.799 ERROR 13756 --- [  biz-worker-34] o.s.core.tool.jackson.JsonUtil           : Unexpected character (',' (code 44)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')

 at [Source: (String)"{

 "id": "d374ccf18f65ad88d7dd3feade45d81d", 

  "version": "1.0",

  "method": "thing.event.property.post",

  "params": {

    "temperature": ,

    "humidity": 

  }

}"; line: 6, column: 21]


com.fasterxml.jackson.core.JsonParseException: Unexpected character (',' (code 44)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')

 at [Source: (String)"{

 "id": "d374ccf18f65ad88d7dd3feade45d81d", 

  "version": "1.0",

  "method": "thing.event.property.post",

  "params": {

    "temperature": ,

    "humidity": 

  }

}"; line: 6, column: 21]

at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:2477)

at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:750)

at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:674)

at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:2085)

at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextFieldName(ReaderBasedJsonParser.java:1029)

at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializerNR._deserializeNR(UntypedObjectDeserializerNR.java:227)

at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializerNR.deserialize(UntypedObjectDeserializerNR.java:70)

at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:623)

at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:449)

at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:32)

at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323)

at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4825)

at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3772)

at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3740)

at org.springblade.core.tool.jackson.JsonUtil.toMap(JsonUtil.java:204)

at org.springblade.iot.core.service.impl.ProtocolMapperServiceImpl.readJsonMessage(ProtocolMapperServiceImpl.java:320)

at org.springblade.iot.core.service.impl.ProtocolMapperServiceImpl.transform(ProtocolMapperServiceImpl.java:209)

at org.springblade.iot.core.service.IProtocolMapperService.transform(IProtocolMapperService.java:92)

at org.springblade.iot.core.service.impl.ProtocolMapperServiceImpl.ifMatch(ProtocolMapperServiceImpl.java:229)

at jdk.internal.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.base/java.lang.reflect.Method.invoke(Method.java:568)

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355)

at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)

at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:174)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)

at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720)

at org.springblade.iot.core.service.impl.ProtocolMapperServiceImpl$$SpringCGLIB$$0.ifMatch(<generated>)

at org.springblade.iot.broker.local.listener.BladeMqttMessageListener.onMessage(BladeMqttMessageListener.java:94)

at org.springblade.iot.broker.local.listener.BladeMqttMessageListener.executeProtocolMapperMessageListener(BladeMqttMessageListener.java:126)

at org.springblade.iot.broker.local.listener.BladeMqttMessageListener.lambda$onMessage$1(BladeMqttMessageListener.java:100)

at org.springblade.iot.core.service.impl.ProtocolMapperServiceImpl.ifMatch(ProtocolMapperServiceImpl.java:231)

at jdk.internal.reflect.GeneratedMethodAccessor27.invoke(Unknown Source)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.base/java.lang.reflect.Method.invoke(Method.java:568)

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355)

at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)

at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:174)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)

at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720)

at org.springblade.iot.core.service.impl.ProtocolMapperServiceImpl$$SpringCGLIB$$0.ifMatch(<generated>)

at org.springblade.iot.broker.local.listener.BladeMqttMessageListener.onMessage(BladeMqttMessageListener.java:94)

at org.springblade.iot.broker.local.listener.BladeMqttFunctionMessageListener.execMqttFunction(BladeMqttFunctionMessageListener.java:87)

at org.springblade.iot.broker.local.listener.BladeMqttFunctionMessageListener.lambda$onMessage$0(BladeMqttFunctionMessageListener.java:71)

at org.springblade.core.tenant.TenantUtil.use(TenantUtil.java:93)

at org.springblade.iot.broker.local.listener.BladeMqttFunctionMessageListener.onMessage(BladeMqttFunctionMessageListener.java:70)

at net.dreamlu.iot.mqtt.core.server.support.DefaultMqttServerProcessor.lambda$invokeListenerForPublish$4(DefaultMqttServerProcessor.java:514)

at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)

at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)

at java.base/java.lang.Thread.run(Thread.java:842)


2025-09-26 12:21:06.799 ERROR 13756 --- [  biz-worker-34] o.s.i.c.s.i.ProtocolMapperServiceImpl    : 解析异常 outBody 非正常 json topic:/yywl/sys/ez7gil8efwg1/esp_8266/thing/event/property/post message:{"id":"b56ee8a3d8b025ad065efbc680982e20","version":"1.0","method":"thing.event.property.post","params":{"temperature":27.4,"humidity":75.7}} outTopic:/yywl/sys/ez7gil8efwg1/esp_8266/thing/event/property/post outBody:{

 "id": "d374ccf18f65ad88d7dd3feade45d81d", 

  "version": "1.0",

  "method": "thing.event.property.post",

  "params": {

    "temperature": ,

    "humidity": 

  }

}

2025-09-26 12:21:06.800 DEBUG 13756 --- [  biz-worker-34] o.s.i.b.l.listener.MqttMessageListener   : clientId:mqttx_327f6f83_1758860081000 username:yywl ip:127.0.0.1 port:53895

2025-09-26 12:21:06.800 DEBUG 13756 --- [  biz-worker-34] o.s.i.b.l.listener.MqttMessageListener   : clientId:mqttx_327f6f83_1758860081000 username:yywl ip:127.0.0.1 port:53895


五、若有更多详细信息,请在下面提供。

2条回答
  •   "params": {

        "temperature": ,

        "humidity": 

      }



    这个值没获取到,你先模拟用我们提供的例子来测试

    作者追问:2小时前

    使用模拟了 没问题 有数据 所以想其他方法能不能产生数据

    image.pngimage.png

    回答: 33分钟前

    用我们自带的这个例子的格式来模拟发送,看看能不能成功。你可以可以打断点一步一步去看,代码也没几行,调试下看看调用流程就知道逻辑了。

    CleanShot20250926151037@2x.png

    0 讨论(0)
  • 1小时前

    请注意,你这个输入和输出的 topic 规则是可以互相匹配的,容易造成消息递归,建议不要这么弄。

    作者追问:1小时前

    那我应该怎么配置比较好

    0 讨论(0)
提交回复