You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eventmesh.apache.org by jo...@apache.org on 2023/02/12 14:51:29 UTC

[incubator-eventmesh] branch master updated: [ISSUE #3122]Refactor JsonUtils (#3123)

This is an automated email from the ASF dual-hosted git repository.

jonyang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-eventmesh.git


The following commit(s) were added to refs/heads/master by this push:
     new 4ececbfc9 [ISSUE #3122]Refactor JsonUtils (#3123)
4ececbfc9 is described below

commit 4ececbfc9d50bfaf44e9bab8de77268ed507a06f
Author: mxsm <lj...@gmail.com>
AuthorDate: Sun Feb 12 22:51:23 2023 +0800

    [ISSUE #3122]Refactor JsonUtils (#3123)
    
    * [ISSUE #3122]Refactor JsonUtils
    
    * polish code
    
    * polish code style
    
    * polish code add dateformate for JsonUtils
---
 .../admin/rocketmq/handler/TopicsHandler.java      |  4 +-
 .../org/apache/eventmesh/common/Constants.java     |  4 +-
 .../eventmesh/common/EventMeshDateFormat.java      | 28 ++++++++
 .../common/protocol/http/HttpCommand.java          |  2 +-
 .../common/protocol/http/HttpEventWrapper.java     |  4 +-
 .../http/body/client/HeartbeatRequestBody.java     |  6 +-
 .../http/body/client/HeartbeatResponseBody.java    |  2 +-
 .../protocol/http/body/client/RegRequestBody.java  |  4 +-
 .../protocol/http/body/client/RegResponseBody.java |  2 +-
 .../http/body/client/SubscribeRequestBody.java     |  4 +-
 .../http/body/client/SubscribeResponseBody.java    |  2 +-
 .../http/body/client/UnRegRequestBody.java         |  4 +-
 .../http/body/client/UnRegResponseBody.java        |  2 +-
 .../http/body/client/UnSubscribeRequestBody.java   |  4 +-
 .../http/body/client/UnSubscribeResponseBody.java  |  2 +-
 .../http/body/message/PushMessageRequestBody.java  |  4 +-
 .../http/body/message/PushMessageResponseBody.java |  2 +-
 .../http/body/message/ReplyMessageRequestBody.java |  4 +-
 .../body/message/ReplyMessageResponseBody.java     |  2 +-
 .../body/message/SendMessageBatchRequestBody.java  |  4 +-
 .../body/message/SendMessageBatchResponseBody.java |  2 +-
 .../message/SendMessageBatchV2ResponseBody.java    |  2 +-
 .../http/body/message/SendMessageRequestBody.java  |  2 +-
 .../http/body/message/SendMessageResponseBody.java |  2 +-
 .../eventmesh/common/protocol/tcp/codec/Codec.java |  2 +-
 .../apache/eventmesh/common/utils/JsonUtils.java   | 54 +++++++-------
 .../eventmesh/common/utils/JsonUtilsTest.java      | 84 ++++++++++++++++++++++
 .../connector/pravega/client/PravegaEvent.java     |  4 +-
 .../rabbitmq/cloudevent/RabbitmqCloudEvent.java    |  2 +-
 .../connector/rabbitmq/utils/ByteArrayUtils.java   |  4 +-
 .../apache/eventmesh/grpc/GrpcAbstractDemo.java    |  4 +-
 .../grpc/sub/app/controller/SubController.java     |  2 +-
 .../eventmesh/http/demo/HttpAbstractDemo.java      |  4 +-
 .../pub/eventmeshmessage/AsyncPublishInstance.java |  2 +-
 .../http/demo/sub/controller/SubController.java    |  4 +-
 .../eventmesh/tcp/common/EventMeshTestUtils.java   |  4 +-
 .../protocol/http/HttpProtocolAdaptor.java         |  9 +--
 .../http/resolver/HttpRequestProtocolResolver.java |  4 +-
 .../meshmessage/MeshMessageProtocolAdaptor.java    |  2 +-
 .../registry/etcd/service/EtcdRegistryService.java |  4 +-
 .../service/ZookeeperRegistryService.java          |  6 +-
 .../admin/handler/ConfigurationHandler.java        |  6 +-
 .../admin/handler/DeleteWebHookConfigHandler.java  |  2 +-
 .../runtime/admin/handler/EventHandler.java        |  8 +--
 .../runtime/admin/handler/GrpcClientHandler.java   | 10 +--
 .../runtime/admin/handler/HTTPClientHandler.java   | 10 +--
 .../admin/handler/InsertWebHookConfigHandler.java  |  2 +-
 .../runtime/admin/handler/MetricsHandler.java      |  6 +-
 .../handler/QueryWebHookConfigByIdHandler.java     |  4 +-
 .../QueryWebHookConfigByManufacturerHandler.java   |  4 +-
 .../runtime/admin/handler/RegistryHandler.java     |  8 +--
 .../runtime/admin/handler/TCPClientHandler.java    | 10 +--
 .../runtime/admin/handler/TopicHandler.java        | 14 ++--
 .../admin/handler/UpdateWebHookConfigHandler.java  |  2 +-
 .../eventmesh/runtime/admin/utils/JsonUtils.java   | 71 ------------------
 .../eventmesh/runtime/boot/AbstractHTTPServer.java |  4 +-
 .../protocol/grpc/consumer/ConsumerManager.java    |  2 +-
 .../protocol/grpc/producer/SendMessageContext.java |  4 +-
 .../protocol/grpc/push/WebhookPushRequest.java     | 10 +--
 .../core/protocol/grpc/service/ServiceUtils.java   |  4 +-
 .../protocol/http/consumer/ConsumerManager.java    |  2 +-
 .../protocol/http/consumer/HandleMsgContext.java   |  2 +-
 .../http/consumer/HttpClientGroupMapping.java      |  4 +-
 .../protocol/http/processor/HandlerService.java    |  4 +-
 .../processor/LocalSubscribeEventProcessor.java    | 10 +--
 .../processor/LocalUnSubscribeEventProcessor.java  | 12 ++--
 .../processor/RemoteSubscribeEventProcessor.java   | 10 +--
 .../processor/RemoteUnSubscribeEventProcessor.java |  8 +--
 .../processor/SendAsyncRemoteEventProcessor.java   |  2 +-
 .../http/processor/SendSyncMessageProcessor.java   |  2 +-
 .../http/processor/SubscribeProcessor.java         |  2 +-
 .../http/processor/UnSubscribeProcessor.java       |  6 +-
 .../http/processor/inf/AbstractEventProcessor.java |  6 +-
 .../protocol/http/producer/SendMessageContext.java |  4 +-
 .../protocol/http/push/AsyncHTTPPushRequest.java   | 10 +--
 .../tcp/client/group/ClientGroupWrapper.java       |  2 +-
 .../client/grpc/util/EventMeshClientUtil.java      |  4 +-
 .../client/http/AbstractProducerHttpClient.java    |  4 +-
 .../http/consumer/EventMeshHttpConsumer.java       | 12 ++--
 .../client/http/producer/CloudEventProducer.java   |  2 +-
 .../http/producer/EventMeshMessageProducer.java    |  2 +-
 .../client/http/producer/OpenMessageProducer.java  |  4 +-
 .../producer/RRCallbackResponseHandlerAdapter.java |  4 +-
 .../EventMeshMessageTCPPubClient.java              |  2 +-
 .../EventMeshMessageTCPSubClient.java              |  2 +-
 .../pinpoint/exporter/PinpointSpanExporter.java    |  4 +-
 .../webhook/admin/FileWebHookConfigOperation.java  |  4 +-
 .../webhook/admin/NacosWebHookConfigOperation.java | 16 ++---
 .../storage/HookConfigOperationManager.java        |  2 +-
 .../receive/storage/WebhookFileListener.java       |  2 +-
 90 files changed, 337 insertions(+), 287 deletions(-)

diff --git a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/handler/TopicsHandler.java b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/handler/TopicsHandler.java
index 0c0dffd7c..9913f4fc8 100644
--- a/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/handler/TopicsHandler.java
+++ b/eventmesh-admin/eventmesh-admin-rocketmq/src/main/java/org/apache/eventmesh/admin/rocketmq/handler/TopicsHandler.java
@@ -64,7 +64,7 @@ public class TopicsHandler implements HttpHandler {
         try (OutputStream out = httpExchange.getResponseBody()) {
             String params = NetUtils.parsePostBody(httpExchange);
             TopicCreateRequest topicCreateRequest =
-                JsonUtils.deserialize(params, TopicCreateRequest.class);
+                JsonUtils.parseObject(params, TopicCreateRequest.class);
             String topic = topicCreateRequest.getName();
 
             if (StringUtils.isBlank(topic)) {
@@ -80,7 +80,7 @@ public class TopicsHandler implements HttpHandler {
                 logger.info("create a new topic: {}", topic);
                 httpExchange.getResponseHeaders().add(CONTENT_TYPE, APPLICATION_JSON);
                 NetUtils.sendSuccessResponseHeaders(httpExchange);
-                result = JsonUtils.serialize(topicResponse);
+                result = JsonUtils.toJSONString(topicResponse);
                 logger.info(result);
                 out.write(result.getBytes(Constants.DEFAULT_CHARSET));
             } else {
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
index 29212ca1d..4a443c63a 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/Constants.java
@@ -24,7 +24,9 @@ public class Constants {
 
     public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
 
-    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
+    public static final String DATE_FORMAT_INCLUDE_MILLISECONDS = "yyyy-MM-dd HH:mm:ss.SSS";
+
+    public static final String DATE_FORMAT_DEFAULT = "yyyy-MM-dd HH:mm:ss";
 
     public static final String LANGUAGE_JAVA = "JAVA";
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/EventMeshDateFormat.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/EventMeshDateFormat.java
new file mode 100644
index 000000000..c25862ec9
--- /dev/null
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/EventMeshDateFormat.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.eventmesh.common;
+
+import java.text.SimpleDateFormat;
+
+public class EventMeshDateFormat extends SimpleDateFormat {
+
+    public EventMeshDateFormat(final String pattern) {
+        super(pattern);
+    }
+
+}
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpCommand.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpCommand.java
index 61254cfa4..94b3c4ac6 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpCommand.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpCommand.java
@@ -167,7 +167,7 @@ public class HttpCommand implements ProtocolTransportObject {
             return null;
         }
         DefaultFullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK,
-            Unpooled.wrappedBuffer(Objects.requireNonNull(JsonUtils.serialize(this.getBody())).getBytes(Constants.DEFAULT_CHARSET)));
+            Unpooled.wrappedBuffer(Objects.requireNonNull(JsonUtils.toJSONString(this.getBody())).getBytes(Constants.DEFAULT_CHARSET)));
         HttpHeaders headers = response.headers();
         headers.add(HttpHeaderNames.CONTENT_TYPE, "text/plain; charset=" + Constants.DEFAULT_CHARSET);
         headers.add(HttpHeaderNames.CONTENT_LENGTH, response.content().readableBytes());
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpEventWrapper.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpEventWrapper.java
index fd9c45468..1c4b5209d 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpEventWrapper.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/HttpEventWrapper.java
@@ -84,7 +84,7 @@ public class HttpEventWrapper implements ProtocolTransportObject {
         HttpEventWrapper response = new HttpEventWrapper(this.httpMethod, this.httpVersion, this.requestURI);
         response.setReqTime(this.reqTime);
         response.setHeaderMap(responseHeaderMap);
-        response.setBody(JsonUtils.serialize(responseBodyMap).getBytes(StandardCharsets.UTF_8));
+        response.setBody(JsonUtils.toJSONString(responseBodyMap).getBytes(StandardCharsets.UTF_8));
         response.setResTime(System.currentTimeMillis());
         return response;
     }
@@ -101,7 +101,7 @@ public class HttpEventWrapper implements ProtocolTransportObject {
         Map<String, Object> responseBodyMap = new HashMap<>();
         responseBodyMap.put("retCode", eventMeshRetCode.getRetCode());
         responseBodyMap.put("retMessage", eventMeshRetCode.getErrMsg());
-        response.setBody(JsonUtils.serialize(responseBodyMap).getBytes(StandardCharsets.UTF_8));
+        response.setBody(JsonUtils.toJSONString(responseBodyMap).getBytes(StandardCharsets.UTF_8));
         response.setResTime(System.currentTimeMillis());
         return response;
     }
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java
index b65f7c39d..ecd552064 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatRequestBody.java
@@ -52,7 +52,7 @@ public class HeartbeatRequestBody extends Body {
         body.setClientType(MapUtils.getString(bodyParam, CLIENTTYPE));
         body.setConsumerGroup(MapUtils.getString(bodyParam, CONSUMERGROUP));
         body.setHeartbeatEntities(JsonUtils
-                .deserialize(MapUtils.getString(bodyParam, HEARTBEATENTITIES),
+                .parseTypeReferenceObject(MapUtils.getString(bodyParam, HEARTBEATENTITIES),
                         new TypeReference<List<HeartbeatEntity>>() {
                         }));
         return body;
@@ -63,10 +63,10 @@ public class HeartbeatRequestBody extends Body {
         Map<String, Object> map = new HashMap<>();
         map.put(CLIENTTYPE, clientType);
         map.put(CONSUMERGROUP, consumerGroup);
-        map.put(HEARTBEATENTITIES, JsonUtils.serialize(heartbeatEntities));
+        map.put(HEARTBEATENTITIES, JsonUtils.toJSONString(heartbeatEntities));
         return map;
     }
-    
+
     @ToString
     public static class HeartbeatEntity {
         public String topic;
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java
index fca6d2f6e..9c47cde97 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/HeartbeatResponseBody.java
@@ -75,7 +75,7 @@ public class HeartbeatResponseBody extends Body {
         sb.append("heartbeatResponseBody={")
                 .append("retCode=").append(retCode).append(",")
                 .append("retMsg=").append(retMsg).append(",")
-                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}");
+                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java
index affffdce0..bc0b63425 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegRequestBody.java
@@ -71,7 +71,7 @@ public class RegRequestBody extends Body {
         RegRequestBody body = new RegRequestBody();
         body.setClientType(MapUtils.getString(bodyParam, CLIENTTYPE));
         body.setEndPoint(MapUtils.getString(bodyParam, ENDPOINT));
-        body.setTopics(JsonUtils.deserialize(MapUtils.getString(bodyParam, TOPICS),
+        body.setTopics(JsonUtils.parseTypeReferenceObject(MapUtils.getString(bodyParam, TOPICS),
                 new TypeReference<List<SubscriptionItem>>() {
                 }));
         return body;
@@ -82,7 +82,7 @@ public class RegRequestBody extends Body {
         Map<String, Object> map = new HashMap<>();
         map.put(CLIENTTYPE, clientType);
         map.put(ENDPOINT, endPoint);
-        map.put(TOPICS, JsonUtils.serialize(topics));
+        map.put(TOPICS, JsonUtils.toJSONString(topics));
         return map;
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java
index 497a7417d..f4694ec41 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/RegResponseBody.java
@@ -69,7 +69,7 @@ public class RegResponseBody extends Body {
         sb.append("regResponseBody={")
                 .append("retCode=").append(retCode).append(",")
                 .append("retMsg=").append(retMsg).append(",")
-                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}");
+                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java
index df413c1c3..ef0b7765a 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeRequestBody.java
@@ -70,7 +70,7 @@ public class SubscribeRequestBody extends Body {
     public static SubscribeRequestBody buildBody(Map<String, Object> bodyParam) {
         SubscribeRequestBody body = new SubscribeRequestBody();
         body.setUrl(MapUtils.getString(bodyParam, URL));
-        body.setTopics(JsonUtils.deserialize(MapUtils.getString(bodyParam, TOPIC),
+        body.setTopics(JsonUtils.parseTypeReferenceObject(MapUtils.getString(bodyParam, TOPIC),
                 new TypeReference<List<SubscriptionItem>>() {
                 }));
         body.setConsumerGroup(MapUtils.getString(bodyParam, CONSUMERGROUP));
@@ -81,7 +81,7 @@ public class SubscribeRequestBody extends Body {
     public Map<String, Object> toMap() {
         Map<String, Object> map = new HashMap<String, Object>();
         map.put(URL, url);
-        map.put(TOPIC, JsonUtils.serialize(topics));
+        map.put(TOPIC, JsonUtils.toJSONString(topics));
         map.put(CONSUMERGROUP, consumerGroup);
         return map;
     }
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java
index 0d856713b..6ab24b538 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/SubscribeResponseBody.java
@@ -69,7 +69,7 @@ public class SubscribeResponseBody extends Body {
         sb.append("regResponseBody={")
             .append("retCode=").append(retCode).append(",")
             .append("retMsg=").append(retMsg).append(",")
-            .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}");
+            .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java
index 6fa82bda7..4ba7d9d0c 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegRequestBody.java
@@ -57,7 +57,7 @@ public class UnRegRequestBody extends Body {
     public static UnRegRequestBody buildBody(Map<String, Object> bodyParam) {
         UnRegRequestBody body = new UnRegRequestBody();
         body.setClientType(MapUtils.getString(bodyParam, CLIENTTYPE));
-        body.setTopics(JsonUtils.deserialize(MapUtils.getString(bodyParam, TOPICS),
+        body.setTopics(JsonUtils.parseTypeReferenceObject(MapUtils.getString(bodyParam, TOPICS),
                 new TypeReference<List<UnRegTopicEntity>>() {
                 }));
         return body;
@@ -67,7 +67,7 @@ public class UnRegRequestBody extends Body {
     public Map<String, Object> toMap() {
         Map<String, Object> map = new HashMap<>();
         map.put(CLIENTTYPE, clientType);
-        map.put(TOPICS, JsonUtils.serialize(topics));
+        map.put(TOPICS, JsonUtils.toJSONString(topics));
         return map;
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java
index c43502f05..6ab4122ba 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnRegResponseBody.java
@@ -69,7 +69,7 @@ public class UnRegResponseBody extends Body {
         sb.append("regResponseBody={")
                 .append("retCode=").append(retCode).append(",")
                 .append("retMsg=").append(retMsg).append(",")
-                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}");
+                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java
index ca9db6210..5118ab2c5 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeRequestBody.java
@@ -70,7 +70,7 @@ public class UnSubscribeRequestBody extends Body {
         UnSubscribeRequestBody body = new UnSubscribeRequestBody();
         body.setUrl(MapUtils.getString(bodyParam, URL));
         body.setTopics(JsonUtils
-                .deserialize(MapUtils.getString(bodyParam, TOPIC), new TypeReference<List<String>>() {
+                .parseTypeReferenceObject(MapUtils.getString(bodyParam, TOPIC), new TypeReference<List<String>>() {
                 }));
         body.setConsumerGroup(MapUtils.getString(bodyParam, CONSUMERGROUP));
         return body;
@@ -80,7 +80,7 @@ public class UnSubscribeRequestBody extends Body {
     public Map<String, Object> toMap() {
         Map<String, Object> map = new HashMap<>();
         map.put(URL, url);
-        map.put(TOPIC, JsonUtils.serialize(topics));
+        map.put(TOPIC, JsonUtils.toJSONString(topics));
         map.put(CONSUMERGROUP, consumerGroup);
         return map;
     }
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java
index 621f7dca2..bee0b5936 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/client/UnSubscribeResponseBody.java
@@ -70,7 +70,7 @@ public class UnSubscribeResponseBody extends Body {
         sb.append("regResponseBody={")
                 .append("retCode=").append(retCode).append(",")
                 .append("retMsg=").append(retMsg).append(",")
-                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}");
+                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java
index 183e4cb60..1aabd1d61 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageRequestBody.java
@@ -108,7 +108,7 @@ public class PushMessageRequestBody extends Body {
 
         if (StringUtils.isNotBlank(extFields)) {
             pushMessageRequestBody.setExtFields(
-                    JsonUtils.deserialize(extFields, new TypeReference<HashMap<String, String>>() {
+                    JsonUtils.parseTypeReferenceObject(extFields, new TypeReference<HashMap<String, String>>() {
                     }));
         }
         return pushMessageRequestBody;
@@ -122,7 +122,7 @@ public class PushMessageRequestBody extends Body {
         map.put(CONTENT, content);
         map.put(BIZSEQNO, bizSeqNo);
         map.put(UNIQUEID, uniqueId);
-        map.put(EXTFIELDS, JsonUtils.serialize(extFields));
+        map.put(EXTFIELDS, JsonUtils.toJSONString(extFields));
 
         return map;
     }
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java
index 01000b0d0..56a201009 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/PushMessageResponseBody.java
@@ -72,7 +72,7 @@ public class PushMessageResponseBody extends Body {
         sb.append("pushMessageResponseBody={")
                 .append("retCode=").append(retCode).append(",")
                 .append("retMsg=").append(retMsg).append(",")
-                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}");
+                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java
index b45b1cf93..7860e5365 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageRequestBody.java
@@ -106,7 +106,7 @@ public class ReplyMessageRequestBody extends Body {
         String extFields = MapUtils.getString(bodyParam, EXTFIELDS);
         if (StringUtils.isNotBlank(extFields)) {
             body.setExtFields(
-                    JsonUtils.deserialize(extFields, new TypeReference<HashMap<String, String>>() {
+                    JsonUtils.parseTypeReferenceObject(extFields, new TypeReference<HashMap<String, String>>() {
                     }));
         }
         body.setProducerGroup(MapUtils.getString(bodyParam, PRODUCERGROUP));
@@ -133,7 +133,7 @@ public class ReplyMessageRequestBody extends Body {
         map.put(ORIGTOPIC, origTopic);
         map.put(UNIQUEID, uniqueId);
         map.put(CONTENT, content);
-        map.put(EXTFIELDS, JsonUtils.serialize(extFields));
+        map.put(EXTFIELDS, JsonUtils.toJSONString(extFields));
         map.put(PRODUCERGROUP, producerGroup);
         return map;
     }
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java
index 342f151c0..efadbb9fc 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/ReplyMessageResponseBody.java
@@ -75,7 +75,7 @@ public class ReplyMessageResponseBody extends Body {
         sb.append("replyMessageResponseBody={")
                 .append("retCode=").append(retCode).append(",")
                 .append("retMsg=").append(retMsg).append(",")
-                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}");
+                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java
index da7795533..53f0cfdcc 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchRequestBody.java
@@ -86,7 +86,7 @@ public class SendMessageBatchRequestBody extends Body {
                 .append("batchId=").append(batchId).append(",")
                 .append("size=").append(size).append(",")
                 .append("producerGroup=").append(producerGroup).append(",")
-                .append("contents=").append(JsonUtils.serialize(contents)).append("}");
+                .append("contents=").append(JsonUtils.toJSONString(contents)).append("}");
         return sb.toString();
     }
 
@@ -122,7 +122,7 @@ public class SendMessageBatchRequestBody extends Body {
         body.setBatchId(batchId);
         if (StringUtils.isNotBlank(contents)) {
             body.setContents(
-                    JsonUtils.deserialize(contents, new TypeReference<List<BatchMessageEntity>>() {
+                    JsonUtils.parseTypeReferenceObject(contents, new TypeReference<List<BatchMessageEntity>>() {
                     }));
         }
         body.setSize(size);
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java
index f50447367..934f54f6a 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchResponseBody.java
@@ -75,7 +75,7 @@ public class SendMessageBatchResponseBody extends Body {
         sb.append("sendMessageBatchResponseBody={")
                 .append("retCode=").append(retCode).append(",")
                 .append("retMsg=").append(retMsg).append(",")
-                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}");
+                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java
index 26cc08202..9fe63e6c5 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageBatchV2ResponseBody.java
@@ -75,7 +75,7 @@ public class SendMessageBatchV2ResponseBody extends Body {
         sb.append("sendMessageBatchV2ResponseBody={")
                 .append("retCode=").append(retCode).append(",")
                 .append("retMsg=").append(retMsg).append(",")
-                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}");
+                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java
index 66f3d8979..a17e045c7 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageRequestBody.java
@@ -130,7 +130,7 @@ public class SendMessageRequestBody extends Body {
         String extFields = MapUtils.getString(bodyParam, EXTFIELDS);
         if (StringUtils.isNotBlank(extFields)) {
             body.setExtFields(
-                    JsonUtils.deserialize(extFields, new TypeReference<HashMap<String, String>>() {
+                    JsonUtils.parseTypeReferenceObject(extFields, new TypeReference<HashMap<String, String>>() {
                     }));
         }
         body.setProducerGroup(MapUtils.getString(bodyParam, PRODUCERGROUP));
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java
index e4e9eaa12..0c5cc86fe 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/http/body/message/SendMessageResponseBody.java
@@ -75,7 +75,7 @@ public class SendMessageResponseBody extends Body {
         sb.append("sendMessageResponseBody={")
                 .append("retCode=").append(retCode).append(",")
                 .append("retMsg=").append(retMsg).append(",")
-                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT)).append("}");
+                .append("resTime=").append(DateFormatUtils.format(resTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/codec/Codec.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/codec/Codec.java
index 0db858717..b42bd7269 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/codec/Codec.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/protocol/tcp/codec/Codec.java
@@ -79,7 +79,7 @@ public class Codec {
             final Header header = pkg.getHeader();
             Preconditions.checkNotNull(header, "TcpPackage header cannot be null", header);
             if (LOG.isDebugEnabled()) {
-                LOG.debug("Encoder pkg={}", JsonUtils.serialize(pkg));
+                LOG.debug("Encoder pkg={}", JsonUtils.toJSONString(pkg));
             }
 
             final byte[] headerData = serializeBytes(OBJECT_MAPPER.writeValueAsString(header));
diff --git a/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/JsonUtils.java b/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/JsonUtils.java
index 42f74ac85..310bf9250 100644
--- a/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/JsonUtils.java
+++ b/eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/JsonUtils.java
@@ -17,16 +17,21 @@
 
 package org.apache.eventmesh.common.utils;
 
+
+import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.EventMeshDateFormat;
 import org.apache.eventmesh.common.exception.JsonException;
 
 import org.apache.commons.lang3.StringUtils;
 
 import java.io.IOException;
+import java.text.SimpleDateFormat;
 import java.util.Objects;
 
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.SerializationFeature;
@@ -39,10 +44,11 @@ public class JsonUtils {
     private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
 
     static {
-        OBJECT_MAPPER.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
-            .configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
+        OBJECT_MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+        OBJECT_MAPPER.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
+        OBJECT_MAPPER.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
+        OBJECT_MAPPER.setDateFormat(new EventMeshDateFormat(Constants.DATE_FORMAT_DEFAULT));
         OBJECT_MAPPER.setSerializationInclusion(JsonInclude.Include.NON_NULL);
-
     }
 
     /**
@@ -51,7 +57,7 @@ public class JsonUtils {
      * @param obj obj
      * @return json string
      */
-    public static String serialize(Object obj) {
+    public static String toJSONString(Object obj) {
         if (Objects.isNull(obj)) {
             return null;
         }
@@ -62,72 +68,72 @@ public class JsonUtils {
         }
     }
 
-    public static <T> byte[] serialize(String topic, Class<T> data) throws JsonProcessingException {
-        if (Objects.isNull(data)) {
+    public static byte[] toJSONBytes(Object obj) {
+        if (Objects.isNull(obj)) {
             return null;
         }
         try {
-            return OBJECT_MAPPER.writeValueAsBytes(data);
+            return OBJECT_MAPPER.writeValueAsBytes(obj);
         } catch (JsonProcessingException e) {
             throw new JsonException("serialize to json error", e);
         }
     }
 
     /**
-     * Deserialize json string to object.
+     * parse json string to object.
      *
-     * @param json json string
-     * @param clz  object class
-     * @param <T>  object type
+     * @param text  json string
+     * @param clazz object class
+     * @param <T>   object type
      * @return object
      */
-    public static <T> T deserialize(String json, Class<T> clz) {
-        if (StringUtils.isEmpty(json)) {
+    public static <T> T parseObject(String text, Class<T> clazz) {
+        if (StringUtils.isEmpty(text)) {
             return null;
         }
         try {
-            return OBJECT_MAPPER.readValue(json, clz);
+            return OBJECT_MAPPER.readValue(text, clazz);
         } catch (JsonProcessingException e) {
             throw new JsonException("deserialize json string to object error", e);
         }
     }
 
-    public static <T> T deserialize(Class<T> clazz, byte[] bytes) {
+    public static <T> T parseObject(byte[] bytes, Class<T> clazz) {
         if (bytes == null || bytes.length == 0) {
             return null;
         }
         try {
             return OBJECT_MAPPER.readValue(bytes, clazz);
         } catch (IOException e) {
-            throw new JsonException(String.format("deserialize bytes to %s error", clazz), e);
+            throw new JsonException(String.format("parse bytes to %s error", clazz), e);
         }
     }
 
     /**
-     * Deserialize json string to object.
+     * parse json string to object.
      *
-     * @param str           json string
+     * @param text          json string
      * @param typeReference object type reference
      * @param <T>           object type
      * @return object
      */
-    public static <T> T deserialize(String str, TypeReference<T> typeReference) {
-        if (StringUtils.isEmpty(str)) {
+    public static <T> T parseTypeReferenceObject(String text, TypeReference<T> typeReference) {
+        if (StringUtils.isEmpty(text)) {
             return null;
         }
         try {
-            return OBJECT_MAPPER.readValue(str, typeReference);
+            return OBJECT_MAPPER.readValue(text, typeReference);
         } catch (JsonProcessingException e) {
             throw new JsonException("deserialize json string to typeReference error", e);
         }
     }
 
-    public static JsonNode getJsonNode(String json) {
-        if (StringUtils.isEmpty(json)) {
+    public static JsonNode getJsonNode(String text) {
+        if (StringUtils.isEmpty(text)) {
             return null;
         }
         try {
-            return OBJECT_MAPPER.readTree(json);
+            return OBJECT_MAPPER.readTree(text);
         } catch (JsonProcessingException e) {
             throw new JsonException("deserialize json string to JsonNode error", e);
         }
diff --git a/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/JsonUtilsTest.java b/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/JsonUtilsTest.java
new file mode 100644
index 000000000..763ec6866
--- /dev/null
+++ b/eventmesh-common/src/test/java/org/apache/eventmesh/common/utils/JsonUtilsTest.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.eventmesh.common.utils;
+
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.JsonNode;
+
+import lombok.Data;
+
+public class JsonUtilsTest {
+
+    @Test
+    public void toJSONString() {
+        Map<String, String> map = new HashMap<>();
+        String jsonString = JsonUtils.toJSONString(map);
+        Assert.assertEquals("{}", jsonString);
+        map.put("mxsm", "2");
+        jsonString = JsonUtils.toJSONString(map);
+        Assert.assertEquals("{\"mxsm\":\"2\"}", jsonString);
+    }
+
+    @Test
+    public void testToBytes() {
+        Map<String, String> map = new HashMap<>();
+        map.put("mxsm", "2");
+        Assert.assertArrayEquals("{\"mxsm\":\"2\"}".getBytes(StandardCharsets.UTF_8), JsonUtils.toJSONBytes(map));
+    }
+
+    @Test
+    public void testParseObject() {
+
+        String json = "{\"mxsm\":\"2\",\"date\":\"2022-02-12 21:36:01\"}";
+        Map<String, String> map = JsonUtils.parseTypeReferenceObject(json, new TypeReference<Map<String, String>>() {
+
+        });
+        Assert.assertEquals("2", map.get("mxsm"));
+        EventMesh mxsm = JsonUtils.parseObject(json, EventMesh.class);
+        Assert.assertEquals("2", mxsm.mxsm);
+        Assert.assertEquals(new GregorianCalendar(2022, 1, 12, 21, 36, 01).getTime().getTime(), mxsm.date.getTime());
+        EventMesh mxsm1 = JsonUtils.parseObject(json.getBytes(StandardCharsets.UTF_8), EventMesh.class);
+        Assert.assertEquals("2", mxsm1.mxsm);
+    }
+
+
+    @Test
+    public void getJsonNode() {
+        String json = "{\"mxsm\":\"2\",\"date\":\"2022-02-12 21:36:01\"}";
+        JsonNode jsonNode = JsonUtils.getJsonNode(json);
+        Assert.assertEquals("2", jsonNode.findValue("mxsm").asText());
+    }
+
+    @Data
+    public static class EventMesh {
+
+        private String mxsm;
+
+        private Date date;
+    }
+}
diff --git a/eventmesh-connector-plugin/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/client/PravegaEvent.java b/eventmesh-connector-plugin/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/client/PravegaEvent.java
index 7da900ab8..e5ecbb13d 100644
--- a/eventmesh-connector-plugin/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/client/PravegaEvent.java
+++ b/eventmesh-connector-plugin/eventmesh-connector-pravega/src/main/java/org/apache/eventmesh/connector/pravega/client/PravegaEvent.java
@@ -45,11 +45,11 @@ public class PravegaEvent implements Serializable {
     private long createTimestamp;
 
     public static byte[] toByteArray(PravegaEvent pravegaEvent) {
-        return JsonUtils.serialize(pravegaEvent).getBytes(StandardCharsets.UTF_8);
+        return JsonUtils.toJSONString(pravegaEvent).getBytes(StandardCharsets.UTF_8);
     }
 
     public static PravegaEvent getFromByteArray(byte[] body) {
-        return JsonUtils.deserialize(new String(body, StandardCharsets.UTF_8), PravegaEvent.class);
+        return JsonUtils.parseObject(new String(body, StandardCharsets.UTF_8), PravegaEvent.class);
     }
 
     public CloudEvent convertToCloudEvent() {
diff --git a/eventmesh-connector-plugin/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/cloudevent/RabbitmqCloudEvent.java b/eventmesh-connector-plugin/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/cloudevent/RabbitmqCloudEvent.java
index 94a87264e..501b26620 100644
--- a/eventmesh-connector-plugin/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/cloudevent/RabbitmqCloudEvent.java
+++ b/eventmesh-connector-plugin/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/cloudevent/RabbitmqCloudEvent.java
@@ -75,7 +75,7 @@ public class RabbitmqCloudEvent implements Serializable {
     }
 
     public static RabbitmqCloudEvent getFromByteArray(byte[] body) {
-        return JsonUtils.deserialize(new String(body, Constants.DEFAULT_CHARSET), new TypeReference<RabbitmqCloudEvent>() {
+        return JsonUtils.parseTypeReferenceObject(new String(body, Constants.DEFAULT_CHARSET), new TypeReference<RabbitmqCloudEvent>() {
         });
     }
 }
diff --git a/eventmesh-connector-plugin/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/utils/ByteArrayUtils.java b/eventmesh-connector-plugin/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/utils/ByteArrayUtils.java
index ad4796948..d6848db9c 100644
--- a/eventmesh-connector-plugin/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/utils/ByteArrayUtils.java
+++ b/eventmesh-connector-plugin/eventmesh-connector-rabbitmq/src/main/java/org/apache/eventmesh/connector/rabbitmq/utils/ByteArrayUtils.java
@@ -29,13 +29,13 @@ import com.fasterxml.jackson.core.type.TypeReference;
 public class ByteArrayUtils {
 
     public static <T> Optional<byte[]> objectToBytes(T obj) throws IOException {
-        String s = JsonUtils.serialize(obj);
+        String s = JsonUtils.toJSONString(obj);
         byte[] bytes = s.getBytes();
         return Optional.ofNullable(bytes);
     }
 
     public static <T> Optional<T> bytesToObject(byte[] bytes) throws IOException, ClassNotFoundException {
-        T t = JsonUtils.deserialize(new String(bytes, Constants.DEFAULT_CHARSET), new TypeReference<T>() {
+        T t = JsonUtils.parseTypeReferenceObject(new String(bytes, Constants.DEFAULT_CHARSET), new TypeReference<T>() {
         });
         return Optional.ofNullable(t);
     }
diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/GrpcAbstractDemo.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/GrpcAbstractDemo.java
index dc51423cf..b53922e65 100644
--- a/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/GrpcAbstractDemo.java
+++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/GrpcAbstractDemo.java
@@ -60,7 +60,7 @@ public class GrpcAbstractDemo {
                 .withSource(URI.create("/"))
                 .withDataContentType(ExampleConstants.CLOUDEVENT_CONTENT_TYPE)
                 .withType(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME)
-                .withData(JsonUtils.serialize(content).getBytes(StandardCharsets.UTF_8))
+                .withData(JsonUtils.toJSONString(content).getBytes(StandardCharsets.UTF_8))
                 .withExtension(Constants.EVENTMESH_MESSAGE_CONST_TTL, String.valueOf(4 * 1000))
                 .build();
 
@@ -68,7 +68,7 @@ public class GrpcAbstractDemo {
 
     protected static EventMeshMessage buildEventMeshMessage(final Map<String, String> content) {
         return EventMeshMessage.builder()
-                .content(JsonUtils.serialize(content))
+                .content(JsonUtils.toJSONString(content))
                 .topic(ExampleConstants.EVENTMESH_GRPC_BROADCAT_TEST_TOPIC)
                 .uniqueId(RandomStringUtils.generateNum(30))
                 .bizSeqNo(RandomStringUtils.generateNum(30))
diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/sub/app/controller/SubController.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/sub/app/controller/SubController.java
index 74a81a241..aa95ac448 100644
--- a/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/sub/app/controller/SubController.java
+++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/grpc/sub/app/controller/SubController.java
@@ -79,7 +79,7 @@ public class SubController {
 
         final Map<String, Object> map = new HashMap<>();
         map.put("retCode", 1);
-        return JsonUtils.serialize(map);
+        return JsonUtils.toJSONString(map);
     }
 
 }
diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/HttpAbstractDemo.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/HttpAbstractDemo.java
index 78d603f34..73ee82460 100644
--- a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/HttpAbstractDemo.java
+++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/HttpAbstractDemo.java
@@ -77,7 +77,7 @@ public class HttpAbstractDemo {
                 .withSource(URI.create("/"))
                 .withDataContentType(ExampleConstants.CLOUDEVENT_CONTENT_TYPE)
                 .withType(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME)
-                .withData(JsonUtils.serialize(content).getBytes(StandardCharsets.UTF_8))
+                .withData(JsonUtils.toJSONString(content).getBytes(StandardCharsets.UTF_8))
                 .withExtension(Constants.EVENTMESH_MESSAGE_CONST_TTL, String.valueOf(4_000))
                 .build();
     }
@@ -85,7 +85,7 @@ public class HttpAbstractDemo {
     protected static EventMeshMessage buildMessage(final Map<String, String> content) {
         return EventMeshMessage.builder()
                 .bizSeqNo(RandomStringUtils.generateNum(30))
-                .content(JsonUtils.serialize(content))
+                .content(JsonUtils.toJSONString(content))
                 .topic(ExampleConstants.EVENTMESH_HTTP_ASYNC_TEST_TOPIC)
                 .uniqueId(RandomStringUtils.generateNum(30))
                 .build()
diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncPublishInstance.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncPublishInstance.java
index 5b179b1b9..52b67d002 100644
--- a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncPublishInstance.java
+++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/pub/eventmeshmessage/AsyncPublishInstance.java
@@ -45,7 +45,7 @@ public class AsyncPublishInstance extends HttpAbstractDemo {
 
                 final EventMeshMessage eventMeshMessage = EventMeshMessage.builder()
                         .bizSeqNo(RandomStringUtils.generateNum(30))
-                        .content(JsonUtils.serialize(content))
+                        .content(JsonUtils.toJSONString(content))
                         .topic(ExampleConstants.EVENTMESH_HTTP_ASYNC_TEST_TOPIC)
                         .uniqueId(RandomStringUtils.generateNum(30))
                         .build()
diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java
index 58dd6462c..d3117835a 100644
--- a/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java
+++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/http/demo/sub/controller/SubController.java
@@ -58,7 +58,7 @@ public class SubController {
             log.info("receive message: {}", content);
         }
         @SuppressWarnings("unchecked")
-        final Map<String, String> contentMap = JsonUtils.deserialize(content, HashMap.class);
+        final Map<String, String> contentMap = JsonUtils.parseObject(content, HashMap.class);
         if (StringUtils.equals(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME, contentMap.get(ProtocolKey.PROTOCOL_TYPE))) {
             final EventFormat eventFormat = EventFormatProvider.getInstance().resolveFormat(JsonFormat.CONTENT_TYPE);
             if (eventFormat != null) {
@@ -77,7 +77,7 @@ public class SubController {
 
         final Map<String, Object> map = new HashMap<>();
         map.put("retCode", 1);
-        return JsonUtils.serialize(map);
+        return JsonUtils.toJSONString(map);
     }
 
 }
diff --git a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/common/EventMeshTestUtils.java b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/common/EventMeshTestUtils.java
index b62ee0a85..4cf1fdef7 100644
--- a/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/common/EventMeshTestUtils.java
+++ b/eventmesh-examples/src/main/java/org/apache/eventmesh/tcp/common/EventMeshTestUtils.java
@@ -177,7 +177,7 @@ public class EventMeshTestUtils {
                 .withSource(URI.create("/"))
                 .withDataContentType(ExampleConstants.CLOUDEVENT_CONTENT_TYPE)
                 .withType(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME)
-                .withData(JsonUtils.serialize(content).getBytes(StandardCharsets.UTF_8))
+                .withData(JsonUtils.toJSONString(content).getBytes(StandardCharsets.UTF_8))
                 .withExtension(UtilsConstants.TTL, DEFAULT_TTL_MS)
                 .build();
     }
@@ -192,7 +192,7 @@ public class EventMeshTestUtils {
                 .withSource(URI.create("/"))
                 .withDataContentType(ExampleConstants.CLOUDEVENT_CONTENT_TYPE)
                 .withType(EventMeshCommon.CLOUD_EVENTS_PROTOCOL_NAME)
-                .withData(JsonUtils.serialize(content).getBytes(StandardCharsets.UTF_8))
+                .withData(JsonUtils.toJSONString(content).getBytes(StandardCharsets.UTF_8))
                 .withExtension(UtilsConstants.TTL, DEFAULT_TTL_MS)
                 .withExtension(UtilsConstants.MSG_TYPE, "persistent")
                 .withExtension(UtilsConstants.KEYS, generateRandomString(16))
diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/HttpProtocolAdaptor.java b/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/HttpProtocolAdaptor.java
index 31c1f2be8..0f0914f80 100644
--- a/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/HttpProtocolAdaptor.java
+++ b/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/HttpProtocolAdaptor.java
@@ -97,12 +97,13 @@ public class HttpProtocolAdaptor<T extends ProtocolTransportObject>
         httpEventWrapper.setSysHeaderMap(sysHeaderMap);
         // ce data
         if (null != cloudEvent.getData()) {
-            Map<String, Object> dataContentMap = JsonUtils.deserialize(new String(cloudEvent.getData().toBytes(), Constants.DEFAULT_CHARSET),
+            Map<String, Object> dataContentMap = JsonUtils.parseTypeReferenceObject(
+                new String(cloudEvent.getData().toBytes(), Constants.DEFAULT_CHARSET),
                 new TypeReference<Map<String, Object>>() {
                 });
-            String requestHeader = JsonUtils.serialize(dataContentMap.get(CONSTANTS_KEY_HEADERS));
-            byte[] requestBody = JsonUtils.serialize(dataContentMap.get(CONSTANTS_KEY_BODY)).getBytes(StandardCharsets.UTF_8);
-            Map<String, Object> requestHeaderMap = JsonUtils.deserialize(requestHeader, new TypeReference<Map<String, Object>>() {
+            String requestHeader = JsonUtils.toJSONString(dataContentMap.get(CONSTANTS_KEY_HEADERS));
+            byte[] requestBody = JsonUtils.toJSONString(dataContentMap.get(CONSTANTS_KEY_BODY)).getBytes(StandardCharsets.UTF_8);
+            Map<String, Object> requestHeaderMap = JsonUtils.parseTypeReferenceObject(requestHeader, new TypeReference<Map<String, Object>>() {
             });
             String requestURI = dataContentMap.get(CONSTANTS_KEY_PATH).toString();
             String httpMethod = dataContentMap.get(CONSTANTS_KEY_METHOD).toString();
diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/resolver/HttpRequestProtocolResolver.java b/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/resolver/HttpRequestProtocolResolver.java
index a45695d60..a0583ac10 100644
--- a/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/resolver/HttpRequestProtocolResolver.java
+++ b/eventmesh-protocol-plugin/eventmesh-protocol-http/src/main/java/org/apache/eventmesh/protocol/http/resolver/HttpRequestProtocolResolver.java
@@ -80,7 +80,7 @@ public class HttpRequestProtocolResolver {
 
             byte[] requestBody = httpEventWrapper.getBody();
 
-            Map<String, Object> requestBodyMap = JsonUtils.deserialize(new String(requestBody, Constants.DEFAULT_CHARSET),
+            Map<String, Object> requestBodyMap = JsonUtils.parseTypeReferenceObject(new String(requestBody, Constants.DEFAULT_CHARSET),
                     new TypeReference<HashMap<String, Object>>() {
                     });
 
@@ -92,7 +92,7 @@ public class HttpRequestProtocolResolver {
             data.put(HttpProtocolConstant.CONSTANTS_KEY_PATH, requestURI);
             data.put(HttpProtocolConstant.CONSTANTS_KEY_METHOD, httpEventWrapper.getHttpMethod());
             // with data
-            return builder.withData(JsonUtils.serialize(data).getBytes(StandardCharsets.UTF_8)).build();
+            return builder.withData(JsonUtils.toJSONString(data).getBytes(StandardCharsets.UTF_8)).build();
         } catch (Exception e) {
             throw new ProtocolHandleException(e.getMessage(), e);
         }
diff --git a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptor.java b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptor.java
index 2fa8c88d4..3b9ffb75e 100644
--- a/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptor.java
+++ b/eventmesh-protocol-plugin/eventmesh-protocol-meshmessage/src/main/java/org/apache/eventmesh/protocol/meshmessage/MeshMessageProtocolAdaptor.java
@@ -80,7 +80,7 @@ public class MeshMessageProtocolAdaptor implements ProtocolAdaptor<ProtocolTrans
     }
 
     private CloudEvent deserializeTcpProtocol(Header header, String bodyJson) throws ProtocolHandleException {
-        return TcpMessageProtocolResolver.buildEvent(header, JsonUtils.deserialize(bodyJson, EventMeshMessage.class));
+        return TcpMessageProtocolResolver.buildEvent(header, JsonUtils.parseObject(bodyJson, EventMeshMessage.class));
     }
 
     private CloudEvent deserializeHttpProtocol(String requestCode,
diff --git a/eventmesh-registry-plugin/eventmesh-registry-etcd/src/main/java/org/apache/eventmesh/registry/etcd/service/EtcdRegistryService.java b/eventmesh-registry-plugin/eventmesh-registry-etcd/src/main/java/org/apache/eventmesh/registry/etcd/service/EtcdRegistryService.java
index d3c7a67ec..cb0952ac6 100644
--- a/eventmesh-registry-plugin/eventmesh-registry-etcd/src/main/java/org/apache/eventmesh/registry/etcd/service/EtcdRegistryService.java
+++ b/eventmesh-registry-plugin/eventmesh-registry-etcd/src/main/java/org/apache/eventmesh/registry/etcd/service/EtcdRegistryService.java
@@ -152,7 +152,7 @@ public class EtcdRegistryService implements RegistryService {
             if (CollectionUtils.isNotEmpty(keyValues)) {
                 for (KeyValue kv : keyValues) {
                     EventMeshDataInfo eventMeshDataInfo =
-                        JsonUtils.deserialize(new String(kv.getValue().getBytes(), Constants.DEFAULT_CHARSET), EventMeshDataInfo.class);
+                        JsonUtils.parseObject(new String(kv.getValue().getBytes(), Constants.DEFAULT_CHARSET), EventMeshDataInfo.class);
                     eventMeshDataInfoList.add(eventMeshDataInfo);
                 }
             }
@@ -199,7 +199,7 @@ public class EtcdRegistryService implements RegistryService {
             EventMeshDataInfo eventMeshDataInfo =
                     new EventMeshDataInfo(eventMeshClusterName, eventMeshName,
                             endPoint, System.currentTimeMillis(), eventMeshRegisterInfo.getMetadata());
-            ByteSequence etcdValue = ByteSequence.from(JsonUtils.serialize(eventMeshDataInfo).getBytes(Constants.DEFAULT_CHARSET));
+            ByteSequence etcdValue = ByteSequence.from(JsonUtils.toJSONString(eventMeshDataInfo).getBytes(Constants.DEFAULT_CHARSET));
             etcdClient.getKVClient().put(etcdKey, etcdValue, PutOption.newBuilder().withLeaseId(getLeaseId()).build());
             eventMeshRegisterInfoMap.put(eventMeshName, eventMeshRegisterInfo);
 
diff --git a/eventmesh-registry-plugin/eventmesh-registry-zookeeper/src/main/java/org/apache/eventmesh/registry/zookeeper/service/ZookeeperRegistryService.java b/eventmesh-registry-plugin/eventmesh-registry-zookeeper/src/main/java/org/apache/eventmesh/registry/zookeeper/service/ZookeeperRegistryService.java
index 9580d11cc..d63161d09 100644
--- a/eventmesh-registry-plugin/eventmesh-registry-zookeeper/src/main/java/org/apache/eventmesh/registry/zookeeper/service/ZookeeperRegistryService.java
+++ b/eventmesh-registry-plugin/eventmesh-registry-zookeeper/src/main/java/org/apache/eventmesh/registry/zookeeper/service/ZookeeperRegistryService.java
@@ -152,7 +152,7 @@ public class ZookeeperRegistryService implements RegistryService {
                         continue;
                     }
 
-                    EventMeshInstance eventMeshInstance = JsonUtils.deserialize(new String(data, StandardCharsets.UTF_8), EventMeshInstance.class);
+                    EventMeshInstance eventMeshInstance = JsonUtils.parseObject(new String(data, StandardCharsets.UTF_8), EventMeshInstance.class);
 
                     EventMeshDataInfo eventMeshDataInfo =
                         new EventMeshDataInfo(clusterName, serviceName, endpoint, stat.getMtime(), eventMeshInstance.getMetaData());
@@ -200,7 +200,7 @@ public class ZookeeperRegistryService implements RegistryService {
                         continue;
                     }
 
-                    EventMeshInstance eventMeshInstance = JsonUtils.deserialize(new String(data, StandardCharsets.UTF_8), EventMeshInstance.class);
+                    EventMeshInstance eventMeshInstance = JsonUtils.parseObject(new String(data, StandardCharsets.UTF_8), EventMeshInstance.class);
 
                     EventMeshDataInfo eventMeshDataInfo =
                         new EventMeshDataInfo(clusterName, serviceName, endpoint, stat.getMtime(), eventMeshInstance.getMetaData());
@@ -256,7 +256,7 @@ public class ZookeeperRegistryService implements RegistryService {
                 .orSetData()
                 .creatingParentsIfNeeded()
                 .withMode(CreateMode.EPHEMERAL)
-                .forPath(path, JsonUtils.serialize(eventMeshInstance).getBytes(StandardCharsets.UTF_8));
+                .forPath(path, JsonUtils.toJSONString(eventMeshInstance).getBytes(StandardCharsets.UTF_8));
 
             eventMeshRegisterInfoMap.put(eventMeshName, eventMeshRegisterInfo);
         } catch (Exception e) {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ConfigurationHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ConfigurationHandler.java
index afd702a62..01510e8d3 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ConfigurationHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/ConfigurationHandler.java
@@ -17,10 +17,10 @@
 
 package org.apache.eventmesh.runtime.admin.handler;
 
+import org.apache.eventmesh.common.utils.JsonUtils;
 import org.apache.eventmesh.runtime.admin.controller.HttpHandlerManager;
 import org.apache.eventmesh.runtime.admin.response.Error;
 import org.apache.eventmesh.runtime.admin.response.GetConfigurationResponse;
-import org.apache.eventmesh.runtime.admin.utils.JsonUtils;
 import org.apache.eventmesh.runtime.common.EventHttpHandler;
 import org.apache.eventmesh.runtime.configuration.EventMeshGrpcConfiguration;
 import org.apache.eventmesh.runtime.configuration.EventMeshHTTPConfiguration;
@@ -102,7 +102,7 @@ public class ConfigurationHandler extends AbstractHttpHandler {
                     eventMeshGrpcConfiguration.isEventMeshServerUseTls()
                 );
 
-                String result = JsonUtils.toJson(getConfigurationResponse);
+                String result = JsonUtils.toJSONString(getConfigurationResponse);
                 httpExchange.sendResponseHeaders(200, result.getBytes().length);
                 out.write(result.getBytes());
             } catch (Exception e) {
@@ -113,7 +113,7 @@ public class ConfigurationHandler extends AbstractHttpHandler {
                 String stackTrace = writer.toString();
 
                 Error error = new Error(e.toString(), stackTrace);
-                String result = JsonUtils.toJson(error);
+                String result = JsonUtils.toJSONString(error);
                 httpExchange.sendResponseHeaders(500, result.getBytes().length);
                 out.write(result.getBytes());
             }
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/DeleteWebHookConfigHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/DeleteWebHookConfigHandler.java
index cfe8458e4..fa5dd0ac8 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/DeleteWebHookConfigHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/DeleteWebHookConfigHandler.java
@@ -53,7 +53,7 @@ public class DeleteWebHookConfigHandler extends AbstractHttpHandler {
 
         // get requestBody and resolve to WebHookConfig
         String requestBody = NetUtils.parsePostBody(httpExchange);
-        WebHookConfig webHookConfig = JsonUtils.deserialize(requestBody, WebHookConfig.class);
+        WebHookConfig webHookConfig = JsonUtils.parseObject(requestBody, WebHookConfig.class);
 
         try (OutputStream out = httpExchange.getResponseBody()) {
 
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/EventHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/EventHandler.java
index 950930f06..aa8071959 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/EventHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/EventHandler.java
@@ -17,10 +17,10 @@
 
 package org.apache.eventmesh.runtime.admin.handler;
 
+import org.apache.eventmesh.common.utils.JsonUtils;
 import org.apache.eventmesh.runtime.admin.controller.HttpHandlerManager;
 import org.apache.eventmesh.runtime.admin.response.Error;
 import org.apache.eventmesh.runtime.admin.utils.HttpExchangeUtils;
-import org.apache.eventmesh.runtime.admin.utils.JsonUtils;
 import org.apache.eventmesh.runtime.common.EventHttpHandler;
 import org.apache.eventmesh.runtime.core.plugin.MQAdminWrapper;
 
@@ -125,7 +125,7 @@ public class EventHandler extends AbstractHttpHandler {
                     .serialize(event);
                 eventJsonList.add(new String(serializedEvent, StandardCharsets.UTF_8));
             }
-            String result = JsonUtils.toJson(eventJsonList);
+            String result = JsonUtils.toJSONString(eventJsonList);
             httpExchange.sendResponseHeaders(200, result.getBytes().length);
             out.write(result.getBytes());
         } catch (Exception e) {
@@ -136,7 +136,7 @@ public class EventHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes().length);
             out.write(result.getBytes());
         } finally {
@@ -175,7 +175,7 @@ public class EventHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes().length);
             out.write(result.getBytes());
         } finally {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/GrpcClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/GrpcClientHandler.java
index fdb4840f8..207cd8408 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/GrpcClientHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/GrpcClientHandler.java
@@ -17,12 +17,12 @@
 
 package org.apache.eventmesh.runtime.admin.handler;
 
+import org.apache.eventmesh.common.utils.JsonUtils;
 import org.apache.eventmesh.runtime.admin.controller.HttpHandlerManager;
 import org.apache.eventmesh.runtime.admin.request.DeleteGrpcClientRequest;
 import org.apache.eventmesh.runtime.admin.response.Error;
 import org.apache.eventmesh.runtime.admin.response.GetClientResponse;
 import org.apache.eventmesh.runtime.admin.utils.HttpExchangeUtils;
-import org.apache.eventmesh.runtime.admin.utils.JsonUtils;
 import org.apache.eventmesh.runtime.boot.EventMeshGrpcServer;
 import org.apache.eventmesh.runtime.common.EventHttpHandler;
 import org.apache.eventmesh.runtime.core.protocol.grpc.consumer.ConsumerManager;
@@ -79,7 +79,7 @@ public class GrpcClientHandler extends AbstractHttpHandler {
         OutputStream out = httpExchange.getResponseBody();
         try {
             String request = HttpExchangeUtils.streamToString(httpExchange.getRequestBody());
-            DeleteGrpcClientRequest deleteGrpcClientRequest = JsonUtils.toObject(request, DeleteGrpcClientRequest.class);
+            DeleteGrpcClientRequest deleteGrpcClientRequest = JsonUtils.parseObject(request, DeleteGrpcClientRequest.class);
             String url = deleteGrpcClientRequest.url;
 
             ConsumerManager consumerManager = eventMeshGrpcServer.getConsumerManager();
@@ -102,7 +102,7 @@ public class GrpcClientHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes().length);
             out.write(result.getBytes());
         } finally {
@@ -157,7 +157,7 @@ public class GrpcClientHandler extends AbstractHttpHandler {
                 return Integer.compare(rhs.port, lhs.port);
             });
 
-            String result = JsonUtils.toJson(getClientResponseList);
+            String result = JsonUtils.toJSONString(getClientResponseList);
             httpExchange.sendResponseHeaders(200, result.getBytes().length);
             out.write(result.getBytes());
         } catch (Exception e) {
@@ -168,7 +168,7 @@ public class GrpcClientHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes().length);
             out.write(result.getBytes());
         } finally {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/HTTPClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/HTTPClientHandler.java
index 57ea80931..032ac44f0 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/HTTPClientHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/HTTPClientHandler.java
@@ -17,12 +17,12 @@
 
 package org.apache.eventmesh.runtime.admin.handler;
 
+import org.apache.eventmesh.common.utils.JsonUtils;
 import org.apache.eventmesh.runtime.admin.controller.HttpHandlerManager;
 import org.apache.eventmesh.runtime.admin.request.DeleteHTTPClientRequest;
 import org.apache.eventmesh.runtime.admin.response.Error;
 import org.apache.eventmesh.runtime.admin.response.GetClientResponse;
 import org.apache.eventmesh.runtime.admin.utils.HttpExchangeUtils;
-import org.apache.eventmesh.runtime.admin.utils.JsonUtils;
 import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer;
 import org.apache.eventmesh.runtime.common.EventHttpHandler;
 import org.apache.eventmesh.runtime.core.protocol.http.processor.inf.Client;
@@ -77,7 +77,7 @@ public class HTTPClientHandler extends AbstractHttpHandler {
         OutputStream out = httpExchange.getResponseBody();
         try {
             String request = HttpExchangeUtils.streamToString(httpExchange.getRequestBody());
-            DeleteHTTPClientRequest deleteHTTPClientRequest = JsonUtils.toObject(request, DeleteHTTPClientRequest.class);
+            DeleteHTTPClientRequest deleteHTTPClientRequest = JsonUtils.parseObject(request, DeleteHTTPClientRequest.class);
             String url = deleteHTTPClientRequest.url;
 
             for (List<Client> clientList : eventMeshHTTPServer.getSubscriptionManager().getLocalClientInfoMapping().values()) {
@@ -94,7 +94,7 @@ public class HTTPClientHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes().length);
             out.write(result.getBytes());
         } finally {
@@ -148,7 +148,7 @@ public class HTTPClientHandler extends AbstractHttpHandler {
                 return Integer.compare(rhs.port, lhs.port);
             });
 
-            String result = JsonUtils.toJson(getClientResponseList);
+            String result = JsonUtils.toJSONString(getClientResponseList);
             httpExchange.sendResponseHeaders(200, result.getBytes().length);
             out.write(result.getBytes());
         } catch (Exception e) {
@@ -159,7 +159,7 @@ public class HTTPClientHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes().length);
             out.write(result.getBytes());
         } finally {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/InsertWebHookConfigHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/InsertWebHookConfigHandler.java
index fb3d05437..ecf173ea0 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/InsertWebHookConfigHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/InsertWebHookConfigHandler.java
@@ -52,7 +52,7 @@ public class InsertWebHookConfigHandler extends AbstractHttpHandler {
 
         // get requestBody and resolve to WebHookConfig
         String requestBody = NetUtils.parsePostBody(httpExchange);
-        WebHookConfig webHookConfig = JsonUtils.deserialize(requestBody, WebHookConfig.class);
+        WebHookConfig webHookConfig = JsonUtils.parseObject(requestBody, WebHookConfig.class);
 
         try (OutputStream out = httpExchange.getResponseBody()) {
             Integer code = operation.insertWebHookConfig(webHookConfig); // operating result
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetricsHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetricsHandler.java
index 19b0af9fe..9babfa66c 100755
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetricsHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/MetricsHandler.java
@@ -17,12 +17,12 @@
 
 package org.apache.eventmesh.runtime.admin.handler;
 
+import org.apache.eventmesh.common.utils.JsonUtils;
 import org.apache.eventmesh.metrics.api.model.HttpSummaryMetrics;
 import org.apache.eventmesh.metrics.api.model.TcpSummaryMetrics;
 import org.apache.eventmesh.runtime.admin.controller.HttpHandlerManager;
 import org.apache.eventmesh.runtime.admin.response.Error;
 import org.apache.eventmesh.runtime.admin.response.GetMetricsResponse;
-import org.apache.eventmesh.runtime.admin.utils.JsonUtils;
 import org.apache.eventmesh.runtime.boot.EventMeshHTTPServer;
 import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
 import org.apache.eventmesh.runtime.common.EventHttpHandler;
@@ -119,7 +119,7 @@ public class MetricsHandler extends AbstractHttpHandler {
                 tcpSummaryMetrics.getAllConnections(),
                 tcpSummaryMetrics.getSubTopicNum()
             );
-            String result = JsonUtils.toJson(getMetricsResponse);
+            String result = JsonUtils.toJSONString(getMetricsResponse);
             httpExchange.sendResponseHeaders(200, result.getBytes().length);
             out.write(result.getBytes());
         } catch (Exception e) {
@@ -130,7 +130,7 @@ public class MetricsHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes().length);
             out.write(result.getBytes());
         } finally {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByIdHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByIdHandler.java
index 0c91a7dbe..7f612b3df 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByIdHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByIdHandler.java
@@ -57,11 +57,11 @@ public class QueryWebHookConfigByIdHandler extends AbstractHttpHandler {
 
         // get requestBody and resolve to WebHookConfig
         String requestBody = NetUtils.parsePostBody(httpExchange);
-        WebHookConfig webHookConfig = JsonUtils.deserialize(requestBody, WebHookConfig.class);
+        WebHookConfig webHookConfig = JsonUtils.parseObject(requestBody, WebHookConfig.class);
 
         try (OutputStream out = httpExchange.getResponseBody()) {
             WebHookConfig result = operation.queryWebHookConfigById(webHookConfig); // operating result
-            out.write(JsonUtils.serialize(result).getBytes(Constants.DEFAULT_CHARSET));
+            out.write(JsonUtils.toJSONString(result).getBytes(Constants.DEFAULT_CHARSET));
         } catch (Exception e) {
             logger.error("get WebHookConfigOperation implementation Failed.", e);
         }
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByManufacturerHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByManufacturerHandler.java
index dee47eded..e00097612 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByManufacturerHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/QueryWebHookConfigByManufacturerHandler.java
@@ -68,13 +68,13 @@ public class QueryWebHookConfigByManufacturerHandler extends AbstractHttpHandler
         JsonNode node = JsonUtils.getJsonNode(NetUtils.parsePostBody(httpExchange));
         Objects.requireNonNull(node, "JsonNode can not be null");
 
-        WebHookConfig webHookConfig = JsonUtils.deserialize(node.get("webHookConfig").toString(), WebHookConfig.class);
+        WebHookConfig webHookConfig = JsonUtils.parseObject(node.get("webHookConfig").toString(), WebHookConfig.class);
         Integer pageNum = Integer.valueOf(node.get("pageNum").toString());
         Integer pageSize = Integer.valueOf(node.get("pageSize").toString());
 
         try (OutputStream out = httpExchange.getResponseBody()) {
             List<WebHookConfig> result = operation.queryWebHookConfigByManufacturer(webHookConfig, pageNum, pageSize); // operating result
-            out.write(JsonUtils.serialize(result).getBytes(Constants.DEFAULT_CHARSET));
+            out.write(JsonUtils.toJSONString(result).getBytes(Constants.DEFAULT_CHARSET));
         } catch (Exception e) {
             LOGGER.error("get WebHookConfigOperation implementation Failed.", e);
         }
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RegistryHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RegistryHandler.java
index e9a715e72..cb6f296e4 100755
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RegistryHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/RegistryHandler.java
@@ -18,10 +18,10 @@
 package org.apache.eventmesh.runtime.admin.handler;
 
 import org.apache.eventmesh.api.registry.dto.EventMeshDataInfo;
+import org.apache.eventmesh.common.utils.JsonUtils;
 import org.apache.eventmesh.runtime.admin.controller.HttpHandlerManager;
 import org.apache.eventmesh.runtime.admin.response.Error;
 import org.apache.eventmesh.runtime.admin.response.GetRegistryResponse;
-import org.apache.eventmesh.runtime.admin.utils.JsonUtils;
 import org.apache.eventmesh.runtime.common.EventHttpHandler;
 import org.apache.eventmesh.runtime.registry.Registry;
 
@@ -86,12 +86,12 @@ public class RegistryHandler extends AbstractHttpHandler {
             }
             getRegistryResponseList.sort(Comparator.comparing(lhs -> lhs.eventMeshClusterName));
 
-            String result = JsonUtils.toJson(getRegistryResponseList);
+            String result = JsonUtils.toJSONString(getRegistryResponseList);
             httpExchange.sendResponseHeaders(200, result.getBytes().length);
             out.write(result.getBytes());
         } catch (NullPointerException e) {
             //registry not initialized, return empty list
-            String result = JsonUtils.toJson(new ArrayList<>());
+            String result = JsonUtils.toJSONString(new ArrayList<>());
             httpExchange.sendResponseHeaders(200, result.getBytes().length);
             out.write(result.getBytes());
         } catch (Exception e) {
@@ -102,7 +102,7 @@ public class RegistryHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes().length);
             out.write(result.getBytes());
         } finally {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TCPClientHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TCPClientHandler.java
index 41ee509ba..a43fb1b87 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TCPClientHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TCPClientHandler.java
@@ -18,12 +18,12 @@
 package org.apache.eventmesh.runtime.admin.handler;
 
 import org.apache.eventmesh.common.protocol.tcp.UserAgent;
+import org.apache.eventmesh.common.utils.JsonUtils;
 import org.apache.eventmesh.runtime.admin.controller.HttpHandlerManager;
 import org.apache.eventmesh.runtime.admin.request.DeleteTCPClientRequest;
 import org.apache.eventmesh.runtime.admin.response.Error;
 import org.apache.eventmesh.runtime.admin.response.GetClientResponse;
 import org.apache.eventmesh.runtime.admin.utils.HttpExchangeUtils;
-import org.apache.eventmesh.runtime.admin.utils.JsonUtils;
 import org.apache.eventmesh.runtime.boot.EventMeshTCPServer;
 import org.apache.eventmesh.runtime.common.EventHttpHandler;
 import org.apache.eventmesh.runtime.core.protocol.tcp.client.EventMeshTcp2Client;
@@ -82,7 +82,7 @@ public class TCPClientHandler extends AbstractHttpHandler {
         OutputStream out = httpExchange.getResponseBody();
         try {
             String request = HttpExchangeUtils.streamToString(httpExchange.getRequestBody());
-            DeleteTCPClientRequest deleteTCPClientRequest = JsonUtils.toObject(request, DeleteTCPClientRequest.class);
+            DeleteTCPClientRequest deleteTCPClientRequest = JsonUtils.parseObject(request, DeleteTCPClientRequest.class);
             String host = deleteTCPClientRequest.host;
             int port = deleteTCPClientRequest.port;
 
@@ -110,7 +110,7 @@ public class TCPClientHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes().length);
             out.write(result.getBytes());
         } finally {
@@ -163,7 +163,7 @@ public class TCPClientHandler extends AbstractHttpHandler {
                 return Integer.compare(rhs.port, lhs.port);
             });
 
-            String result = JsonUtils.toJson(getClientResponseList);
+            String result = JsonUtils.toJSONString(getClientResponseList);
             httpExchange.sendResponseHeaders(200, result.getBytes().length);
             out.write(result.getBytes());
         } catch (Exception e) {
@@ -174,7 +174,7 @@ public class TCPClientHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes().length);
             out.write(result.getBytes());
         } finally {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TopicHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TopicHandler.java
index cb3cc9495..0b65e1b8a 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TopicHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/TopicHandler.java
@@ -19,12 +19,12 @@ package org.apache.eventmesh.runtime.admin.handler;
 
 import org.apache.eventmesh.api.admin.TopicProperties;
 import org.apache.eventmesh.common.Constants;
+import org.apache.eventmesh.common.utils.JsonUtils;
 import org.apache.eventmesh.runtime.admin.controller.HttpHandlerManager;
 import org.apache.eventmesh.runtime.admin.request.CreateTopicRequest;
 import org.apache.eventmesh.runtime.admin.request.DeleteTopicRequest;
 import org.apache.eventmesh.runtime.admin.response.Error;
 import org.apache.eventmesh.runtime.admin.utils.HttpExchangeUtils;
-import org.apache.eventmesh.runtime.admin.utils.JsonUtils;
 import org.apache.eventmesh.runtime.common.EventHttpHandler;
 import org.apache.eventmesh.runtime.core.plugin.MQAdminWrapper;
 
@@ -85,7 +85,7 @@ public class TopicHandler extends AbstractHttpHandler {
 
         try {
             List<TopicProperties> topicList = admin.getTopic();
-            String result = JsonUtils.toJson(topicList);
+            String result = JsonUtils.toJSONString(topicList);
             httpExchange.sendResponseHeaders(200, result.getBytes(Constants.DEFAULT_CHARSET).length);
             out.write(result.getBytes(Constants.DEFAULT_CHARSET));
         } catch (Exception e) {
@@ -96,7 +96,7 @@ public class TopicHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes(Constants.DEFAULT_CHARSET).length);
             out.write(result.getBytes(Constants.DEFAULT_CHARSET));
         } finally {
@@ -121,7 +121,7 @@ public class TopicHandler extends AbstractHttpHandler {
 
         try {
             String request = HttpExchangeUtils.streamToString(httpExchange.getRequestBody());
-            CreateTopicRequest createTopicRequest = JsonUtils.toObject(request, CreateTopicRequest.class);
+            CreateTopicRequest createTopicRequest = JsonUtils.parseObject(request, CreateTopicRequest.class);
             String topicName = createTopicRequest.name;
             admin.createTopic(topicName);
             httpExchange.sendResponseHeaders(200, 0);
@@ -133,7 +133,7 @@ public class TopicHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes(Constants.DEFAULT_CHARSET).length);
             out.write(result.getBytes(Constants.DEFAULT_CHARSET));
         } finally {
@@ -158,7 +158,7 @@ public class TopicHandler extends AbstractHttpHandler {
 
         try {
             String request = HttpExchangeUtils.streamToString(httpExchange.getRequestBody());
-            DeleteTopicRequest deleteTopicRequest = JsonUtils.toObject(request, DeleteTopicRequest.class);
+            DeleteTopicRequest deleteTopicRequest = JsonUtils.parseObject(request, DeleteTopicRequest.class);
             String topicName = deleteTopicRequest.name;
             admin.deleteTopic(topicName);
             httpExchange.sendResponseHeaders(200, 0);
@@ -170,7 +170,7 @@ public class TopicHandler extends AbstractHttpHandler {
             String stackTrace = writer.toString();
 
             Error error = new Error(e.toString(), stackTrace);
-            String result = JsonUtils.toJson(error);
+            String result = JsonUtils.toJSONString(error);
             httpExchange.sendResponseHeaders(500, result.getBytes(Constants.DEFAULT_CHARSET).length);
             out.write(result.getBytes(Constants.DEFAULT_CHARSET));
         } finally {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/UpdateWebHookConfigHandler.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/UpdateWebHookConfigHandler.java
index b1e8d20c3..3553c4ed3 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/UpdateWebHookConfigHandler.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/handler/UpdateWebHookConfigHandler.java
@@ -53,7 +53,7 @@ public class UpdateWebHookConfigHandler extends AbstractHttpHandler {
 
         // get requestBody and resolve to WebHookConfig
         String requestBody = NetUtils.parsePostBody(httpExchange);
-        WebHookConfig webHookConfig = JsonUtils.deserialize(requestBody, WebHookConfig.class);
+        WebHookConfig webHookConfig = JsonUtils.parseObject(requestBody, WebHookConfig.class);
 
         try (OutputStream out = httpExchange.getResponseBody()) {
             Integer code = operation.updateWebHookConfig(webHookConfig); // operating result
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/utils/JsonUtils.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/utils/JsonUtils.java
deleted file mode 100644
index 4a6fb75db..000000000
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/admin/utils/JsonUtils.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.eventmesh.runtime.admin.utils;
-
-import java.io.IOException;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-
-public class JsonUtils {
-    private static final ObjectMapper objectMapper;
-
-    static {
-        objectMapper = new ObjectMapper();
-        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
-        objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
-        objectMapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
-    }
-
-    public static <T> byte[] serialize(String topic, Class<T> data) throws JsonProcessingException {
-        if (data == null) {
-            return null;
-        }
-        return objectMapper.writeValueAsBytes(data);
-    }
-
-    public static String toJson(Object obj) throws JsonProcessingException {
-        if (obj == null) {
-            return null;
-        }
-        return objectMapper.writeValueAsString(obj);
-    }
-
-    public static <T> T toObject(String json, Class<T> clazz) throws JsonProcessingException {
-        return objectMapper.readValue(json, clazz);
-    }
-
-    public static <T> T deserialize(Class<T> clazz, byte[] bytes) throws IOException {
-        if (bytes == null || bytes.length == 0) {
-            return null;
-        }
-
-        return objectMapper.readValue(bytes, clazz);
-    }
-
-    public static <T> T deserialize(Class<T> clazz, String json) throws IOException {
-        if (json == null || json.length() == 0) {
-            return null;
-        }
-
-        return objectMapper.readValue(json, clazz);
-    }
-}
\ No newline at end of file
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java
index f1b23d5f4..3c840718b 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/boot/AbstractHTTPServer.java
@@ -619,7 +619,7 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer {
                 if (length > 0) {
                     final byte[] body = new byte[length];
                     fullHttpRequest.content().readBytes(body);
-                    bodyMap.putAll(Objects.requireNonNull(JsonUtils.deserialize(new String(body, Constants.DEFAULT_CHARSET),
+                    bodyMap.putAll(Objects.requireNonNull(JsonUtils.parseTypeReferenceObject(new String(body, Constants.DEFAULT_CHARSET),
                             new TypeReference<Map<String, Object>>() {
                             })));
                 }
@@ -639,7 +639,7 @@ public abstract class AbstractHTTPServer extends AbstractRemotingServer {
             throw new MethodNotSupportedException("UnSupported Method " + fullHttpRequest.method());
         }
 
-        httpEventWrapper.setBody(Objects.requireNonNull(JsonUtils.serialize(bodyMap)).getBytes(StandardCharsets.UTF_8));
+        httpEventWrapper.setBody(Objects.requireNonNull(JsonUtils.toJSONString(bodyMap)).getBytes(StandardCharsets.UTF_8));
 
         metrics.getSummaryMetrics().recordDecodeTimeCost(System.currentTimeMillis() - bodyDecodeStart);
 
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/consumer/ConsumerManager.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/consumer/ConsumerManager.java
index b5eb7a2b5..dacd2cdfd 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/consumer/ConsumerManager.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/consumer/ConsumerManager.java
@@ -233,7 +233,7 @@ public class ConsumerManager {
                     if (System.currentTimeMillis() - client.getLastUpTime().getTime() > clientTimeout) {
                         if (LOGGER.isWarnEnabled()) {
                             LOGGER.warn("client {} lastUpdate time {} over three heartbeat cycles. Removing it",
-                                    JsonUtils.serialize(client), client.getLastUpTime());
+                                    JsonUtils.toJSONString(client), client.getLastUpTime());
                         }
 
                         deregisterClient(client);
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/producer/SendMessageContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/producer/SendMessageContext.java
index 8db7c3503..db7fd87c9 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/producer/SendMessageContext.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/producer/SendMessageContext.java
@@ -94,9 +94,9 @@ public class SendMessageContext extends RetryContext {
             .append(",producer=")
             .append(eventMeshProducer != null ? eventMeshProducer : null)
             .append(",executeTime=")
-            .append(DateFormatUtils.format(executeTime, Constants.DATE_FORMAT))
+            .append(DateFormatUtils.format(executeTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS))
             .append(",createTime=")
-            .append(DateFormatUtils.format(createTime, Constants.DATE_FORMAT)).append("}");
+            .append(DateFormatUtils.format(createTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/push/WebhookPushRequest.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/push/WebhookPushRequest.java
index 458bb0eca..2d871788f 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/push/WebhookPushRequest.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/push/WebhookPushRequest.java
@@ -126,7 +126,7 @@ public class WebhookPushRequest extends AbstractPushRequest {
             body.add(new BasicNameValuePair(PushMessageRequestBody.RANDOMNO, handleMsgContext.getMsgRandomNo()));
             body.add(new BasicNameValuePair(PushMessageRequestBody.TOPIC, simpleMessage.getTopic()));
             body.add(new BasicNameValuePair(PushMessageRequestBody.EXTFIELDS,
-                    JsonUtils.serialize(simpleMessage.getPropertiesMap())));
+                    JsonUtils.toJSONString(simpleMessage.getPropertiesMap())));
 
             simpleMessage = SimpleMessage.newBuilder(simpleMessage)
                     .putProperties(EventMeshConstants.REQ_EVENTMESH2C_TIMESTAMP, String.valueOf(lastPushTime))
@@ -167,11 +167,11 @@ public class WebhookPushRequest extends AbstractPushRequest {
                 + ",retryTimes=" + retryTimes
                 + ",uniqueId=" + simpleMessage.getUniqueId()
                 + ",executeTime="
-                + DateFormatUtils.format(executeTime, Constants.DATE_FORMAT)
+                + DateFormatUtils.format(executeTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)
                 + ",lastPushTime="
-                + DateFormatUtils.format(lastPushTime, Constants.DATE_FORMAT)
+                + DateFormatUtils.format(lastPushTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)
                 + ",createTime="
-                + DateFormatUtils.format(createTime, Constants.DATE_FORMAT) + "}";
+                + DateFormatUtils.format(createTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS) + "}";
     }
 
     private ResponseHandler<Object> handleResponse(String selectedPushUrl) {
@@ -218,7 +218,7 @@ public class WebhookPushRequest extends AbstractPushRequest {
 
         try {
             Map<String, Object> ret =
-                    JsonUtils.deserialize(content, new TypeReference<Map<String, Object>>() {
+                    JsonUtils.parseTypeReferenceObject(content, new TypeReference<Map<String, Object>>() {
                     });
             Integer retCode = (Integer) ret.get("retCode");
             if (retCode != null && ClientRetCode.contains(retCode)) {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/service/ServiceUtils.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/service/ServiceUtils.java
index d2b2e07e5..69a86aac7 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/service/ServiceUtils.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/grpc/service/ServiceUtils.java
@@ -127,7 +127,7 @@ public class ServiceUtils {
 
         SimpleMessage simpleMessage = SimpleMessage.newBuilder()
                 .setHeader(header)
-                .setContent(JsonUtils.serialize(resp))
+                .setContent(JsonUtils.toJSONString(resp))
                 .build();
 
         emitter.onNext(simpleMessage);
@@ -147,7 +147,7 @@ public class ServiceUtils {
 
         SimpleMessage simpleMessage = SimpleMessage.newBuilder()
                 .setHeader(header)
-                .setContent(JsonUtils.serialize(resp))
+                .setContent(JsonUtils.toJSONString(resp))
                 .build();
 
         emitter.onNext(simpleMessage);
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerManager.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerManager.java
index 02abd89d9..24c613ca6 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerManager.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/ConsumerManager.java
@@ -258,7 +258,7 @@ public class ConsumerManager {
         if (consumerTable.containsKey(consumerGroup)) {
             ConsumerGroupManager cgm = consumerTable.remove(consumerGroup);
             logger.info("start unsubscribe topic with consumer group manager {}",
-                    JsonUtils.serialize(cgm));
+                    JsonUtils.toJSONString(cgm));
             cgm.unsubscribe(consumerGroup);
             cgm.shutdown();
         }
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HandleMsgContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HandleMsgContext.java
index f235d93de..ae7c62f07 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HandleMsgContext.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HandleMsgContext.java
@@ -248,7 +248,7 @@ public class HandleMsgContext {
                 .append(",ttl=")
                 .append(ttl)
                 .append(",createTime=")
-                .append(DateFormatUtils.format(createTime, Constants.DATE_FORMAT))
+                .append(DateFormatUtils.format(createTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS))
                 .append('}')
                 .toString();
     }
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HttpClientGroupMapping.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HttpClientGroupMapping.java
index 11c21dd4e..c4b605eb8 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HttpClientGroupMapping.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/consumer/HttpClientGroupMapping.java
@@ -174,13 +174,13 @@ public final class HttpClientGroupMapping {
                     consumerGroupTopicMetadataMap.put(consumerGroupTopicConfEntry.getKey(), consumerGroupTopicMetadata);
                 }
                 consumerGroupMetadata.setConsumerGroupTopicMetadataMap(consumerGroupTopicMetadataMap);
-                metadata.put(consumerGroupKey, JsonUtils.serialize(consumerGroupMetadata));
+                metadata.put(consumerGroupKey, JsonUtils.toJSONString(consumerGroupMetadata));
             }
         } finally {
             READ_WRITE_LOCK.readLock().unlock();
         }
 
-        metadata.put("topicSet", JsonUtils.serialize(localTopicSet));
+        metadata.put("topicSet", JsonUtils.toJSONString(localTopicSet));
         return metadata;
     }
 
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java
index 75dc3aaa5..d55eaa1da 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/HandlerService.java
@@ -189,7 +189,7 @@ public class HandlerService {
                     byte[] body = new byte[length];
                     fullHttpRequest.content().readBytes(body);
                     Optional
-                        .ofNullable(JsonUtils.deserialize(
+                        .ofNullable(JsonUtils.parseTypeReferenceObject(
                             new String(body, Constants.DEFAULT_CHARSET),
                             new TypeReference<Map<String, Object>>() {}
                         ))
@@ -211,7 +211,7 @@ public class HandlerService {
             throw new RuntimeException("UnSupported Method " + fullHttpRequest.method());
         }
 
-        byte[] requestBody = Optional.ofNullable(JsonUtils.serialize(bodyMap))
+        byte[] requestBody = Optional.ofNullable(JsonUtils.toJSONString(bodyMap))
             .map(s -> s.getBytes(StandardCharsets.UTF_8))
             .orElse(new byte[0]);
 
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/LocalSubscribeEventProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/LocalSubscribeEventProcessor.java
index 88db9db21..729acff6e 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/LocalSubscribeEventProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/LocalSubscribeEventProcessor.java
@@ -88,7 +88,7 @@ public class LocalSubscribeEventProcessor extends AbstractEventProcessor {
         }
 
         //validate body
-        final Map<String, Object> requestBodyMap = Optional.ofNullable(JsonUtils.deserialize(
+        final Map<String, Object> requestBodyMap = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
                 new String(requestWrapper.getBody(), Constants.DEFAULT_CHARSET),
                 new TypeReference<HashMap<String, Object>>() {
                 }
@@ -102,10 +102,10 @@ public class LocalSubscribeEventProcessor extends AbstractEventProcessor {
 
         final String url = requestBodyMap.get("url").toString();
         final String consumerGroup = requestBodyMap.get("consumerGroup").toString();
-        final String topic = JsonUtils.serialize(requestBodyMap.get("topic"));
+        final String topic = JsonUtils.toJSONString(requestBodyMap.get("topic"));
 
         // SubscriptionItem
-        final List<SubscriptionItem> subscriptionList = Optional.ofNullable(JsonUtils.deserialize(
+        final List<SubscriptionItem> subscriptionList = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
                 topic,
                 new TypeReference<List<SubscriptionItem>>() {
                 }
@@ -186,7 +186,7 @@ public class LocalSubscribeEventProcessor extends AbstractEventProcessor {
                 if (log.isErrorEnabled()) {
                     log.error("message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms|topic={}|url={}",
                             System.currentTimeMillis() - startTime,
-                            JsonUtils.serialize(subscriptionList),
+                            JsonUtils.toJSONString(subscriptionList),
                             url, e);
                 }
 
@@ -215,4 +215,4 @@ public class LocalSubscribeEventProcessor extends AbstractEventProcessor {
         clientInfo.setPid(requestHeaderMap.get(ProtocolKey.ClientInstanceKey.PID).toString());
         return clientInfo;
     }
-}
\ No newline at end of file
+}
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/LocalUnSubscribeEventProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/LocalUnSubscribeEventProcessor.java
index 1810b842b..777de7ff9 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/LocalUnSubscribeEventProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/LocalUnSubscribeEventProcessor.java
@@ -103,7 +103,7 @@ public class LocalUnSubscribeEventProcessor extends AbstractEventProcessor {
         //validate body
         final byte[] requestBody = requestWrapper.getBody();
 
-        final Map<String, Object> requestBodyMap = Optional.ofNullable(JsonUtils.deserialize(
+        final Map<String, Object> requestBodyMap = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
                 new String(requestBody, Constants.DEFAULT_CHARSET),
                 new TypeReference<HashMap<String, Object>>() {
                 }
@@ -119,8 +119,8 @@ public class LocalUnSubscribeEventProcessor extends AbstractEventProcessor {
         final String consumerGroup = requestBodyMap.get(EventMeshConstants.CONSUMER_GROUP).toString();
 
         // unSubscriptionItem
-        final List<String> unSubTopicList = Optional.ofNullable(JsonUtils.deserialize(
-                JsonUtils.serialize(requestBodyMap.get(EventMeshConstants.MANAGE_TOPIC)),
+        final List<String> unSubTopicList = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
+                JsonUtils.toJSONString(requestBodyMap.get(EventMeshConstants.MANAGE_TOPIC)),
                 new TypeReference<List<String>>() {
                 }
         )).orElseGet(Collections::emptyList);
@@ -141,7 +141,7 @@ public class LocalUnSubscribeEventProcessor extends AbstractEventProcessor {
                     if (StringUtils.equals(client.getPid(), pid)
                             && StringUtils.equals(client.getUrl(), unSubscribeUrl)) {
                         if (log.isWarnEnabled()) {
-                            log.warn("client {} start unsubscribe", JsonUtils.serialize(client));
+                            log.warn("client {} start unsubscribe", JsonUtils.toJSONString(client));
                         }
                         clientIterator.remove();
                     }
@@ -206,7 +206,7 @@ public class LocalUnSubscribeEventProcessor extends AbstractEventProcessor {
                     if (log.isErrorEnabled()) {
                         log.error("message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms"
                                         + "|topic={}|url={}", System.currentTimeMillis() - startTime,
-                                JsonUtils.serialize(unSubTopicList), unSubscribeUrl, e);
+                                JsonUtils.toJSONString(unSubTopicList), unSubscribeUrl, e);
                     }
                     handlerSpecific.sendErrorResponse(EventMeshRetCode.EVENTMESH_UNSUBSCRIBE_ERR, responseHeaderMap,
                             responseBodyMap, null);
@@ -230,7 +230,7 @@ public class LocalUnSubscribeEventProcessor extends AbstractEventProcessor {
                     if (log.isErrorEnabled()) {
                         log.error("message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms"
                                         + "|topic={}|url={}", System.currentTimeMillis() - startTime,
-                                JsonUtils.serialize(unSubTopicList), unSubscribeUrl, e);
+                                JsonUtils.toJSONString(unSubTopicList), unSubscribeUrl, e);
                     }
                     handlerSpecific.sendErrorResponse(EventMeshRetCode.EVENTMESH_UNSUBSCRIBE_ERR, responseHeaderMap,
                             responseBodyMap, null);
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/RemoteSubscribeEventProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/RemoteSubscribeEventProcessor.java
index a3019a32e..976ddb557 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/RemoteSubscribeEventProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/RemoteSubscribeEventProcessor.java
@@ -105,7 +105,7 @@ public class RemoteSubscribeEventProcessor extends AbstractEventProcessor {
         //validate body
         byte[] requestBody = requestWrapper.getBody();
 
-        Map<String, Object> requestBodyMap = Optional.ofNullable(JsonUtils.deserialize(
+        Map<String, Object> requestBodyMap = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
             new String(requestBody, Constants.DEFAULT_CHARSET),
             new TypeReference<HashMap<String, Object>>() {}
         )).orElseGet(Maps::newHashMap);
@@ -118,11 +118,11 @@ public class RemoteSubscribeEventProcessor extends AbstractEventProcessor {
 
         String url = requestBodyMap.get(EventMeshConstants.URL).toString();
         String consumerGroup = requestBodyMap.get(EventMeshConstants.CONSUMER_GROUP).toString();
-        String topic = JsonUtils.serialize(requestBodyMap.get(EventMeshConstants.MANAGE_TOPIC));
+        String topic = JsonUtils.toJSONString(requestBodyMap.get(EventMeshConstants.MANAGE_TOPIC));
 
 
         // SubscriptionItem
-        List<SubscriptionItem> subscriptionList = Optional.ofNullable(JsonUtils.deserialize(
+        List<SubscriptionItem> subscriptionList = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
             topic,
             new TypeReference<List<SubscriptionItem>>() {}
         )).orElseGet(Collections::emptyList);
@@ -200,7 +200,7 @@ public class RemoteSubscribeEventProcessor extends AbstractEventProcessor {
             String remoteResult = post(closeableHttpClient, targetMesh, builderRemoteHeaderMap(localAddress), remoteBodyMap,
                 response -> EntityUtils.toString(response.getEntity(), Constants.DEFAULT_CHARSET));
 
-            Map<String, String> remoteResultMap = Optional.ofNullable(JsonUtils.deserialize(
+            Map<String, String> remoteResultMap = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
                 remoteResult,
                 new TypeReference<Map<String, String>>() {}
             )).orElseGet(Maps::newHashMap);
@@ -220,7 +220,7 @@ public class RemoteSubscribeEventProcessor extends AbstractEventProcessor {
             httpLogger.error(
                 "message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms|topic={}"
                     + "|bizSeqNo={}|uniqueId={}", endTime - startTime,
-                JsonUtils.serialize(subscriptionList), url, e);
+                JsonUtils.toJSONString(subscriptionList), url, e);
             handlerSpecific.sendErrorResponse(EventMeshRetCode.EVENTMESH_SUBSCRIBE_ERR, responseHeaderMap,
                 responseBodyMap, null);
         }
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/RemoteUnSubscribeEventProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/RemoteUnSubscribeEventProcessor.java
index b5edf8ab9..655f32a4a 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/RemoteUnSubscribeEventProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/RemoteUnSubscribeEventProcessor.java
@@ -105,7 +105,7 @@ public class RemoteUnSubscribeEventProcessor extends AbstractEventProcessor {
         //validate body
         byte[] requestBody = requestWrapper.getBody();
 
-        Map<String, Object> requestBodyMap = Optional.ofNullable(JsonUtils.deserialize(
+        Map<String, Object> requestBodyMap = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
             new String(requestBody, Constants.DEFAULT_CHARSET),
             new TypeReference<HashMap<String, Object>>() {}
         )).orElseGet(Maps::newHashMap);
@@ -142,8 +142,8 @@ public class RemoteUnSubscribeEventProcessor extends AbstractEventProcessor {
             remoteBodyMap.put(EventMeshConstants.CONSUMER_GROUP, meshGroup);
             remoteBodyMap.put(EventMeshConstants.MANAGE_TOPIC, requestBodyMap.get(EventMeshConstants.MANAGE_TOPIC));
 
-            List<String> unSubTopicList = Optional.ofNullable(JsonUtils.deserialize(
-                JsonUtils.serialize(requestBodyMap.get(EventMeshConstants.MANAGE_TOPIC)),
+            List<String> unSubTopicList = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
+                JsonUtils.toJSONString(requestBodyMap.get(EventMeshConstants.MANAGE_TOPIC)),
                 new TypeReference<List<String>>() {}
             )).orElseGet(Collections::emptyList);
 
@@ -168,7 +168,7 @@ public class RemoteUnSubscribeEventProcessor extends AbstractEventProcessor {
             String remoteResult = post(closeableHttpClient, targetMesh, builderRemoteHeaderMap(localAddress), remoteBodyMap,
                 response -> EntityUtils.toString(response.getEntity(), Constants.DEFAULT_CHARSET));
 
-            Map<String, String> remoteResultMap = Optional.ofNullable(JsonUtils.deserialize(
+            Map<String, String> remoteResultMap = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
                 remoteResult,
                 new TypeReference<Map<String, String>>() {}
             )).orElseGet(Maps::newHashMap);
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendAsyncRemoteEventProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendAsyncRemoteEventProcessor.java
index 079c19985..af4f25e42 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendAsyncRemoteEventProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendAsyncRemoteEventProcessor.java
@@ -120,7 +120,7 @@ public class SendAsyncRemoteEventProcessor implements AsyncHttpProcessor {
         requestWrapper.buildSysHeaderForCE();
 
         // process remote event body
-        final Map<String, Object> bodyMap = Optional.ofNullable(JsonUtils.deserialize(
+        final Map<String, Object> bodyMap = Optional.ofNullable(JsonUtils.parseTypeReferenceObject(
                 new String(requestWrapper.getBody(), Constants.DEFAULT_CHARSET),
                 new TypeReference<Map<String, Object>>() {
                 }
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendSyncMessageProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendSyncMessageProcessor.java
index 92b116f62..7ad277a3b 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendSyncMessageProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SendSyncMessageProcessor.java
@@ -295,7 +295,7 @@ public class SendSyncMessageProcessor implements HttpRequestProcessor {
                         final HttpCommand succ = asyncContext.getRequest().createHttpCommandResponse(
                                 sendMessageResponseHeader,
                                 SendMessageResponseBody.buildBody(EventMeshRetCode.SUCCESS.getRetCode(),
-                                        JsonUtils.serialize(SendMessageResponseBody.ReplyMessage.builder()
+                                        JsonUtils.toJSONString(SendMessageResponseBody.ReplyMessage.builder()
                                                 .topic(topic)
                                                 .body(rtnMsg)
                                                 .properties(EventMeshUtil.getEventProp(newEvent))
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SubscribeProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SubscribeProcessor.java
index 97303a928..fd085b507 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SubscribeProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/SubscribeProcessor.java
@@ -227,7 +227,7 @@ public class SubscribeProcessor implements HttpRequestProcessor {
                     LOGGER.error(
                             "message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms|topic={}"
                                     + "|bizSeqNo={}|uniqueId={}", endTime - startTime,
-                            JsonUtils.serialize(subscribeRequestBody.getTopics()),
+                            JsonUtils.toJSONString(subscribeRequestBody.getTopics()),
                             subscribeRequestBody.getUrl(), e);
                 }
                 eventMeshHTTPServer.getMetrics().getSummaryMetrics().recordSendMsgFailed();
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/UnSubscribeProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/UnSubscribeProcessor.java
index 0e6049d62..34cbafa8f 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/UnSubscribeProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/UnSubscribeProcessor.java
@@ -151,7 +151,7 @@ public class UnSubscribeProcessor implements HttpRequestProcessor {
                     if (StringUtils.equals(client.getPid(), pid)
                             && StringUtils.equals(client.getUrl(), unSubscribeUrl)) {
                         if (LOGGER.isWarnEnabled()) {
-                            LOGGER.warn("client {} start unsubscribe", JsonUtils.serialize(client));
+                            LOGGER.warn("client {} start unsubscribe", JsonUtils.toJSONString(client));
                         }
                         clientIterator.remove();
                     }
@@ -225,7 +225,7 @@ public class UnSubscribeProcessor implements HttpRequestProcessor {
                     final long endTime = System.currentTimeMillis();
                     LOGGER.error("message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms|topic={}|url={}",
                             endTime - startTime,
-                            JsonUtils.serialize(unSubscribeRequestBody.getTopics()),
+                            JsonUtils.toJSONString(unSubscribeRequestBody.getTopics()),
                             unSubscribeRequestBody.getUrl(), e);
                     eventMeshHTTPServer.getMetrics().getSummaryMetrics().recordSendMsgFailed();
                     eventMeshHTTPServer.getMetrics().getSummaryMetrics().recordSendMsgCost(endTime - startTime);
@@ -255,7 +255,7 @@ public class UnSubscribeProcessor implements HttpRequestProcessor {
                     final long endTime = System.currentTimeMillis();
                     LOGGER.error("message|eventMesh2mq|REQ|ASYNC|send2MQCost={}ms"
                                     + "|topic={}|url={}", endTime - startTime,
-                            JsonUtils.serialize(unSubscribeRequestBody.getTopics()),
+                            JsonUtils.toJSONString(unSubscribeRequestBody.getTopics()),
                             unSubscribeRequestBody.getUrl(), e);
                     eventMeshHTTPServer.getMetrics().getSummaryMetrics().recordSendMsgFailed();
                     eventMeshHTTPServer.getMetrics().getSummaryMetrics().recordSendMsgCost(endTime - startTime);
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/AbstractEventProcessor.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/AbstractEventProcessor.java
index 3ff387985..d20e394ec 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/AbstractEventProcessor.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/processor/inf/AbstractEventProcessor.java
@@ -107,7 +107,7 @@ public abstract class AbstractEventProcessor implements AsyncHttpProcessor {
                 }
 
                 consumerGroupMetadata.setConsumerGroupTopicMetadataMap(consumerGroupTopicMetadataMap);
-                metadata.put(consumerGroupKey, JsonUtils.serialize(consumerGroupMetadata));
+                metadata.put(consumerGroupKey, JsonUtils.toJSONString(consumerGroupMetadata));
             }
 
             eventMeshHTTPServer.getRegistry().registerMetadata(metadata);
@@ -148,7 +148,7 @@ public abstract class AbstractEventProcessor implements AsyncHttpProcessor {
             }
 
             ConsumerGroupMetadata consumerGroupMetadata =
-                    JsonUtils.deserialize(topicMetadataJson, ConsumerGroupMetadata.class);
+                    JsonUtils.parseObject(topicMetadataJson, ConsumerGroupMetadata.class);
             Map<String, ConsumerGroupTopicMetadata> consumerGroupTopicMetadataMap =
                     Optional.ofNullable(consumerGroupMetadata)
                             .map(ConsumerGroupMetadata::getConsumerGroupTopicMetadataMap)
@@ -260,7 +260,7 @@ public abstract class AbstractEventProcessor implements AsyncHttpProcessor {
 
         //body
         if (MapUtils.isNotEmpty(requestBody)) {
-            String jsonStr = Optional.ofNullable(JsonUtils.serialize(requestBody)).orElse("");
+            String jsonStr = Optional.ofNullable(JsonUtils.toJSONString(requestBody)).orElse("");
             httpPost.setEntity(new StringEntity(jsonStr, ContentType.APPLICATION_JSON));
         }
 
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/SendMessageContext.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/SendMessageContext.java
index a49340485..a174f289d 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/SendMessageContext.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/producer/SendMessageContext.java
@@ -118,8 +118,8 @@ public class SendMessageContext extends RetryContext {
                 .append("bizSeqNo=").append(bizSeqNo)
                 .append(",retryTimes=").append(retryTimes)
                 .append(",producer=").append(eventMeshProducer != null ? eventMeshProducer.producerGroupConfig.getGroupName() : null)
-                .append(",executeTime=").append(DateFormatUtils.format(executeTime, Constants.DATE_FORMAT))
-                .append(",createTime=").append(DateFormatUtils.format(createTime, Constants.DATE_FORMAT)).append("}");
+                .append(",executeTime=").append(DateFormatUtils.format(executeTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS))
+                .append(",createTime=").append(DateFormatUtils.format(createTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AsyncHTTPPushRequest.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AsyncHTTPPushRequest.java
index d4283bdcb..60b6d9685 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AsyncHTTPPushRequest.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/http/push/AsyncHTTPPushRequest.java
@@ -175,7 +175,7 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest {
         body.add(new BasicNameValuePair(PushMessageRequestBody.TOPIC, handleMsgContext.getTopic()));
 
         body.add(new BasicNameValuePair(PushMessageRequestBody.EXTFIELDS,
-            JsonUtils.serialize(EventMeshUtil.getEventProp(handleMsgContext.getEvent()))));
+            JsonUtils.toJSONString(EventMeshUtil.getEventProp(handleMsgContext.getEvent()))));
 
         HttpEntity httpEntity = new UrlEncodedFormEntity(body, StandardCharsets.UTF_8);
 
@@ -296,11 +296,11 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest {
             .append(",retryTimes=").append(retryTimes)
             .append(",uniqueId=").append(handleMsgContext.getUniqueId())
             .append(",executeTime=")
-            .append(DateFormatUtils.format(executeTime, Constants.DATE_FORMAT))
+            .append(DateFormatUtils.format(executeTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS))
             .append(",lastPushTime=")
-            .append(DateFormatUtils.format(lastPushTime, Constants.DATE_FORMAT))
+            .append(DateFormatUtils.format(lastPushTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS))
             .append(",createTime=")
-            .append(DateFormatUtils.format(createTime, Constants.DATE_FORMAT)).append("}");
+            .append(DateFormatUtils.format(createTime, Constants.DATE_FORMAT_INCLUDE_MILLISECONDS)).append("}");
         return sb.toString();
     }
 
@@ -336,7 +336,7 @@ public class AsyncHTTPPushRequest extends AbstractHTTPPushRequest {
 
         try {
             Map<String, Object> ret =
-                JsonUtils.deserialize(content, new TypeReference<Map<String, Object>>() {
+                JsonUtils.parseTypeReferenceObject(content, new TypeReference<Map<String, Object>>() {
                 });
             Integer retCode = (Integer) ret.get("retCode");
             if (retCode != null && ClientRetCode.contains(retCode)) {
diff --git a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientGroupWrapper.java b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientGroupWrapper.java
index c4f8de7ca..8fd9abf1c 100644
--- a/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientGroupWrapper.java
+++ b/eventmesh-runtime/src/main/java/org/apache/eventmesh/runtime/core/protocol/tcp/client/group/ClientGroupWrapper.java
@@ -734,7 +734,7 @@ public class ClientGroupWrapper {
             }
             List<String> paramValues = new ArrayList<String>();
             paramValues.add(EventMeshConstants.MANAGE_MSG);
-            paramValues.add(JsonUtils.serialize(msg));
+            paramValues.add(JsonUtils.toJSONString(msg));
             paramValues.add(EventMeshConstants.MANAGE_GROUP);
             paramValues.add(group);
 
diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/util/EventMeshClientUtil.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/util/EventMeshClientUtil.java
index 384745c50..aee147107 100644
--- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/util/EventMeshClientUtil.java
+++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/grpc/util/EventMeshClientUtil.java
@@ -74,7 +74,7 @@ public class EventMeshClientUtil {
 
         // This is GRPC response message
         if (StringUtils.isEmpty(message.getSeqNum()) && StringUtils.isEmpty(message.getUniqueId())) {
-            return (T) JsonUtils.deserialize(content,
+            return (T) JsonUtils.parseTypeReferenceObject(content,
                     new TypeReference<HashMap<String, String>>() {
                     });
         }
@@ -225,4 +225,4 @@ public class EventMeshClientUtil {
             return messageBuilder.build();
         }
     }
-}
\ No newline at end of file
+}
diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/AbstractProducerHttpClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/AbstractProducerHttpClient.java
index e3e4a5730..3759bd24f 100644
--- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/AbstractProducerHttpClient.java
+++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/AbstractProducerHttpClient.java
@@ -48,7 +48,7 @@ public abstract class AbstractProducerHttpClient<T> extends AbstractHttpClient i
         final String target = selectEventMesh();
         try {
             final String response = HttpUtils.post(httpClient, target, builderPublishRequestParam(t));
-            final EventMeshRetObj ret = JsonUtils.deserialize(response, EventMeshRetObj.class);
+            final EventMeshRetObj ret = JsonUtils.parseObject(response, EventMeshRetObj.class);
             if (Objects.requireNonNull(ret).getRetCode() != EventMeshRetCode.SUCCESS.getRetCode()) {
                 throw new EventMeshException(ret.getRetCode(), ret.getRetMsg());
             }
@@ -63,7 +63,7 @@ public abstract class AbstractProducerHttpClient<T> extends AbstractHttpClient i
         final String target = selectEventMesh();
         try {
             final String response = HttpUtils.post(httpClient, target, builderRequestParam(message, timeout));
-            final EventMeshRetObj ret = JsonUtils.deserialize(response, EventMeshRetObj.class);
+            final EventMeshRetObj ret = JsonUtils.parseObject(response, EventMeshRetObj.class);
             if (Objects.requireNonNull(ret).getRetCode() == EventMeshRetCode.SUCCESS.getRetCode()) {
                 return transformMessage(ret);
             }
diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/EventMeshHttpConsumer.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/EventMeshHttpConsumer.java
index bb8ec1e77..6d24e5180 100644
--- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/EventMeshHttpConsumer.java
+++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/consumer/EventMeshHttpConsumer.java
@@ -90,14 +90,14 @@ public class EventMeshHttpConsumer extends AbstractHttpClient implements AutoClo
 
         final RequestParam subscribeParam = buildCommonRequestParam()
                 .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.SUBSCRIBE.getRequestCode())
-                .addBody(SubscribeRequestBody.TOPIC, JsonUtils.serialize(topicList))
+                .addBody(SubscribeRequestBody.TOPIC, JsonUtils.toJSONString(topicList))
                 .addBody(SubscribeRequestBody.CONSUMERGROUP, eventMeshHttpClientConfig.getConsumerGroup())
                 .addBody(SubscribeRequestBody.URL, subscribeUrl);
 
         final String target = selectEventMesh();
         try {
             final String subRes = HttpUtils.post(httpClient, target, subscribeParam);
-            final EventMeshRetObj ret = JsonUtils.deserialize(subRes, EventMeshRetObj.class);
+            final EventMeshRetObj ret = JsonUtils.parseObject(subRes, EventMeshRetObj.class);
             if (ret.getRetCode() != EventMeshRetCode.SUCCESS.getRetCode()) {
                 throw new EventMeshException(ret.getRetCode(), ret.getRetMsg());
             }
@@ -125,10 +125,10 @@ public class EventMeshHttpConsumer extends AbstractHttpClient implements AutoClo
                 final RequestParam requestParam = buildCommonRequestParam()
                         .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.HEARTBEAT.getRequestCode())
                         .addBody(HeartbeatRequestBody.CLIENTTYPE, ClientType.SUB.name())
-                        .addBody(HeartbeatRequestBody.HEARTBEATENTITIES, JsonUtils.serialize(heartbeatEntities));
+                        .addBody(HeartbeatRequestBody.HEARTBEATENTITIES, JsonUtils.toJSONString(heartbeatEntities));
                 final String target = selectEventMesh();
                 final String res = HttpUtils.post(httpClient, target, requestParam);
-                final EventMeshRetObj ret = JsonUtils.deserialize(res, EventMeshRetObj.class);
+                final EventMeshRetObj ret = JsonUtils.parseObject(res, EventMeshRetObj.class);
                 if (EventMeshRetCode.SUCCESS.getRetCode() != ret.getRetCode()) {
                     throw new EventMeshException(ret.getRetCode(), ret.getRetMsg());
                 }
@@ -149,13 +149,13 @@ public class EventMeshHttpConsumer extends AbstractHttpClient implements AutoClo
 
         final RequestParam unSubscribeParam = buildCommonRequestParam()
                 .addHeader(ProtocolKey.REQUEST_CODE, RequestCode.UNSUBSCRIBE.getRequestCode())
-                .addBody(UnSubscribeRequestBody.TOPIC, JsonUtils.serialize(topicList))
+                .addBody(UnSubscribeRequestBody.TOPIC, JsonUtils.toJSONString(topicList))
                 .addBody(UnSubscribeRequestBody.URL, unSubscribeUrl);
 
         final String target = selectEventMesh();
         try {
             final String unSubRes = HttpUtils.post(httpClient, target, unSubscribeParam);
-            final EventMeshRetObj ret = JsonUtils.deserialize(unSubRes, EventMeshRetObj.class);
+            final EventMeshRetObj ret = JsonUtils.parseObject(unSubRes, EventMeshRetObj.class);
 
             if (EventMeshRetCode.SUCCESS.getRetCode() != ret.getRetCode()) {
                 throw new EventMeshException(ret.getRetCode(), ret.getRetMsg());
diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/CloudEventProducer.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/CloudEventProducer.java
index e2d35bfb3..e06c6d4dd 100644
--- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/CloudEventProducer.java
+++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/CloudEventProducer.java
@@ -116,7 +116,7 @@ class CloudEventProducer extends AbstractProducerHttpClient<CloudEvent> {
 
     @Override
     public CloudEvent transformMessage(final EventMeshRetObj retObj) {
-        final SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.deserialize(retObj.getRetMsg(),
+        final SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.parseObject(retObj.getRetMsg(),
             SendMessageResponseBody.ReplyMessage.class);
         // todo: deserialize message
         return null;
diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshMessageProducer.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshMessageProducer.java
index 5b39b1c61..6f959b5a6 100644
--- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshMessageProducer.java
+++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/EventMeshMessageProducer.java
@@ -95,7 +95,7 @@ class EventMeshMessageProducer extends AbstractProducerHttpClient<EventMeshMessa
 
     @Override
     public EventMeshMessage transformMessage(final EventMeshRetObj retObj) {
-        final SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.deserialize(retObj.getRetMsg(),
+        final SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.parseObject(retObj.getRetMsg(),
             SendMessageResponseBody.ReplyMessage.class);
         return EventMeshMessage.builder()
             .content(replyMessage.body)
diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/OpenMessageProducer.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/OpenMessageProducer.java
index 46040a3c2..6506a45e9 100644
--- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/OpenMessageProducer.java
+++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/OpenMessageProducer.java
@@ -73,13 +73,13 @@ class OpenMessageProducer extends AbstractProducerHttpClient<Message> {
                 .addHeader(ProtocolKey.PROTOCOL_DESC, ProtocolConstant.PROTOCOL_DESC)
                 // todo: add producerGroup to header, set protocol type, protocol version
                 .addBody(SendMessageRequestBody.PRODUCERGROUP, eventMeshHttpClientConfig.getProducerGroup())
-                .addBody(SendMessageRequestBody.CONTENT, JsonUtils.serialize(openMessage));
+                .addBody(SendMessageRequestBody.CONTENT, JsonUtils.toJSONString(openMessage));
         return requestParam;
     }
 
     @Override
     public Message transformMessage(final EventMeshRetObj retObj) {
-        final SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.deserialize(retObj.getRetMsg(),
+        final SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.parseObject(retObj.getRetMsg(),
                 SendMessageResponseBody.ReplyMessage.class);
         // todo: deserialize message
         return null;
diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/RRCallbackResponseHandlerAdapter.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/RRCallbackResponseHandlerAdapter.java
index 965800789..2e5d62404 100644
--- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/RRCallbackResponseHandlerAdapter.java
+++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/http/producer/RRCallbackResponseHandlerAdapter.java
@@ -81,7 +81,7 @@ public class RRCallbackResponseHandlerAdapter<ProtocolMessage> implements Respon
         }
 
         final String res = EntityUtils.toString(response.getEntity(), Constants.DEFAULT_CHARSET);
-        final EventMeshRetObj ret = JsonUtils.deserialize(res, EventMeshRetObj.class);
+        final EventMeshRetObj ret = JsonUtils.parseObject(res, EventMeshRetObj.class);
         Objects.requireNonNull(ret, "EventMeshRetObj must not be null");
         if (ret.getRetCode() != EventMeshRetCode.SUCCESS.getRetCode()) {
             rrCallback.onException(new EventMeshException(ret.getRetCode(), ret.getRetMsg()));
@@ -99,7 +99,7 @@ public class RRCallbackResponseHandlerAdapter<ProtocolMessage> implements Respon
     private ProtocolMessage transformToProtocolMessage(final EventMeshRetObj ret) {
         Objects.requireNonNull(ret, "EventMeshRetObj must not be null");
 
-        final SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.deserialize(ret.getRetMsg(),
+        final SendMessageResponseBody.ReplyMessage replyMessage = JsonUtils.parseObject(ret.getRetMsg(),
                 SendMessageResponseBody.ReplyMessage.class);
         Objects.requireNonNull(replyMessage, "ReplyMessage must not be null");
         if (protocolMessage instanceof EventMeshMessage) {
diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPPubClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPPubClient.java
index 743b8ad17..220fc183b 100644
--- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPPubClient.java
+++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPPubClient.java
@@ -160,7 +160,7 @@ class EventMeshMessageTCPPubClient extends TcpClient implements EventMeshTCPPubC
 
         @Override
         public EventMeshMessage getMessage(Package tcpPackage) {
-            return JsonUtils.deserialize(tcpPackage.getBody().toString(), EventMeshMessage.class);
+            return JsonUtils.parseObject(tcpPackage.getBody().toString(), EventMeshMessage.class);
         }
 
         @Override
diff --git a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPSubClient.java b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPSubClient.java
index 93e4b92ae..b8afb71f0 100644
--- a/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPSubClient.java
+++ b/eventmesh-sdk-java/src/main/java/org/apache/eventmesh/client/tcp/impl/eventmeshmessage/EventMeshMessageTCPSubClient.java
@@ -139,7 +139,7 @@ class EventMeshMessageTCPSubClient extends TcpClient implements EventMeshTCPSubC
 
         @Override
         public EventMeshMessage getProtocolMessage(Package tcpPackage) {
-            return JsonUtils.deserialize(tcpPackage.getBody().toString(), EventMeshMessage.class);
+            return JsonUtils.parseObject(tcpPackage.getBody().toString(), EventMeshMessage.class);
         }
 
         @Override
diff --git a/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/exporter/PinpointSpanExporter.java b/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/exporter/PinpointSpanExporter.java
index a4626d02f..70ce12c87 100644
--- a/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/exporter/PinpointSpanExporter.java
+++ b/eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/main/java/org/apache/eventmesh/trace/pinpoint/exporter/PinpointSpanExporter.java
@@ -323,7 +323,7 @@ public final class PinpointSpanExporter implements SpanExporter {
         Optional.ofNullable(spanData.getAttributes())
                 .ifPresent(attributes -> {
                     span.addAnnotation(Annotations.of(AnnotationKey.HTTP_PARAM_ENTITY.getCode(),
-                            JsonUtils.serialize(attributes)));
+                            JsonUtils.toJSONString(attributes)));
                     attributes.forEach((key, value) -> {
                         if (REQ_IP.equals(key.getKey())) {
                             span.setRemoteAddr(String.valueOf(value));
@@ -348,7 +348,7 @@ public final class PinpointSpanExporter implements SpanExporter {
         spanEvent.setServiceType(ServiceType.INTERNAL_METHOD.getCode());
         spanEvent.setEndPoint(eventData.getName());
         spanEvent.addAnnotation(Annotations.of(AnnotationKey.HTTP_PARAM_ENTITY.getCode(),
-                JsonUtils.serialize(eventData.getAttributes())));
+                JsonUtils.toJSONString(eventData.getAttributes())));
         spanEvent.setElapsedTime((int) toMillis(eventData.getEpochNanos()));
         return spanEvent;
     }
diff --git a/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/admin/FileWebHookConfigOperation.java b/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/admin/FileWebHookConfigOperation.java
index 377fef8ee..87db3b7e7 100644
--- a/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/admin/FileWebHookConfigOperation.java
+++ b/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/admin/FileWebHookConfigOperation.java
@@ -166,7 +166,7 @@ public class FileWebHookConfigOperation implements WebHookConfigOperation {
             return null;
         }
 
-        return JsonUtils.deserialize(fileContent.toString(), WebHookConfig.class);
+        return JsonUtils.parseObject(fileContent.toString(), WebHookConfig.class);
     }
 
     public static boolean writeToFile(final File webhookConfigFile, final WebHookConfig webHookConfig) {
@@ -174,7 +174,7 @@ public class FileWebHookConfigOperation implements WebHookConfigOperation {
              BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos, StandardCharsets.UTF_8))) {
             // lock this file, and will auto release after fos close
             fos.getChannel().lock();
-            bw.write(Objects.requireNonNull(JsonUtils.serialize(webHookConfig)));
+            bw.write(Objects.requireNonNull(JsonUtils.toJSONString(webHookConfig)));
         } catch (IOException e) {
             if (log.isErrorEnabled()) {
                 log.error("write webhookConfig {} to file error", webHookConfig.getCallbackPath());
diff --git a/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/admin/NacosWebHookConfigOperation.java b/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/admin/NacosWebHookConfigOperation.java
index 25b8ee536..fa406b524 100644
--- a/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/admin/NacosWebHookConfigOperation.java
+++ b/eventmesh-webhook/eventmesh-webhook-admin/src/main/java/org/apache/eventmesh/webhook/admin/NacosWebHookConfigOperation.java
@@ -58,7 +58,7 @@ public class NacosWebHookConfigOperation implements WebHookConfigOperation {
         final String manufacturers = configService.getConfig(MANUFACTURERS_DATA_ID, CONSTANTS_WEBHOOK, TIMEOUT_MS);
         if (manufacturers == null) {
             configService.publishConfig(MANUFACTURERS_DATA_ID, CONSTANTS_WEBHOOK,
-                    JsonUtils.serialize(new Manufacturer()), ConfigType.JSON.getType());
+                    JsonUtils.toJSONString(new Manufacturer()), ConfigType.JSON.getType());
         }
 
     }
@@ -84,7 +84,7 @@ public class NacosWebHookConfigOperation implements WebHookConfigOperation {
                 return 0;
             }
             result = configService.publishConfig(getWebHookConfigDataId(webHookConfig), getManuGroupId(webHookConfig),
-                    JsonUtils.serialize(webHookConfig), ConfigType.JSON.getType());
+                    JsonUtils.toJSONString(webHookConfig), ConfigType.JSON.getType());
         } catch (NacosException e) {
             log.error("insertWebHookConfig failed", e);
             return 0;
@@ -97,7 +97,7 @@ public class NacosWebHookConfigOperation implements WebHookConfigOperation {
                 manufacturer.addManufacturer(manufacturerName);
                 manufacturer.getManufacturerEvents(manufacturerName).add(getWebHookConfigDataId(webHookConfig));
                 configService.publishConfig(MANUFACTURERS_DATA_ID, CONSTANTS_WEBHOOK,
-                        JsonUtils.serialize(manufacturer), ConfigType.JSON.getType());
+                        JsonUtils.toJSONString(manufacturer), ConfigType.JSON.getType());
             } catch (NacosException e) {
                 log.error("update manufacturersInfo error", e);
                 //rollback insert
@@ -123,7 +123,7 @@ public class NacosWebHookConfigOperation implements WebHookConfigOperation {
                 return 0;
             }
             result = configService.publishConfig(getWebHookConfigDataId(webHookConfig),
-                    getManuGroupId(webHookConfig), JsonUtils.serialize(webHookConfig), ConfigType.JSON.getType());
+                    getManuGroupId(webHookConfig), JsonUtils.toJSONString(webHookConfig), ConfigType.JSON.getType());
         } catch (NacosException e) {
             log.error("updateWebHookConfig failed", e);
         }
@@ -145,7 +145,7 @@ public class NacosWebHookConfigOperation implements WebHookConfigOperation {
                 final Manufacturer manufacturer = getManufacturersInfo();
                 manufacturer.getManufacturerEvents(manufacturerName).remove(getWebHookConfigDataId(webHookConfig));
                 configService.publishConfig(MANUFACTURERS_DATA_ID, CONSTANTS_WEBHOOK,
-                        JsonUtils.serialize(manufacturer), ConfigType.JSON.getType());
+                        JsonUtils.toJSONString(manufacturer), ConfigType.JSON.getType());
             } catch (NacosException e) {
                 log.error("update manufacturersInfo error", e);
             }
@@ -158,7 +158,7 @@ public class NacosWebHookConfigOperation implements WebHookConfigOperation {
         try {
             final String content = configService.getConfig(getWebHookConfigDataId(webHookConfig),
                     getManuGroupId(webHookConfig), TIMEOUT_MS);
-            return JsonUtils.deserialize(content, WebHookConfig.class);
+            return JsonUtils.parseObject(content, WebHookConfig.class);
         } catch (NacosException e) {
             log.error("queryWebHookConfigById failed", e);
         }
@@ -182,7 +182,7 @@ public class NacosWebHookConfigOperation implements WebHookConfigOperation {
                 for (int i = startIndex; i < endIndex && i < manufacturerEvents.size(); i++) {
                     final String content = configService.getConfig(manufacturerEvents.get(i) + DATA_ID_EXTENSION,
                             getManuGroupId(webHookConfig), TIMEOUT_MS);
-                    webHookConfigs.add(JsonUtils.deserialize(content, WebHookConfig.class));
+                    webHookConfigs.add(JsonUtils.parseObject(content, WebHookConfig.class));
                 }
             }
         } catch (NacosException e) {
@@ -214,7 +214,7 @@ public class NacosWebHookConfigOperation implements WebHookConfigOperation {
     private Manufacturer getManufacturersInfo() throws NacosException {
         final String manufacturersContent = configService.getConfig(MANUFACTURERS_DATA_ID, CONSTANTS_WEBHOOK, TIMEOUT_MS);
         return StringUtil.isNullOrEmpty(manufacturersContent)
-                ? new Manufacturer() : JsonUtils.deserialize(manufacturersContent, Manufacturer.class);
+                ? new Manufacturer() : JsonUtils.parseObject(manufacturersContent, Manufacturer.class);
     }
 
 }
diff --git a/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/storage/HookConfigOperationManager.java b/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/storage/HookConfigOperationManager.java
index c9b663969..ac288f079 100644
--- a/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/storage/HookConfigOperationManager.java
+++ b/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/storage/HookConfigOperationManager.java
@@ -84,7 +84,7 @@ public class HookConfigOperationManager implements WebHookConfigOperation {
                 final String content = nacosConfigService.getConfig(webHookConfig.getManufacturerEventName()
                                 + DATA_ID_EXTENSION,
                         GROUP_PREFIX + webHookConfig.getManufacturerName(), TIMEOUT_MS);
-                return JsonUtils.deserialize(content, WebHookConfig.class);
+                return JsonUtils.parseObject(content, WebHookConfig.class);
             } catch (NacosException e) {
                 log.error("queryWebHookConfigById failed", e);
             }
diff --git a/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/storage/WebhookFileListener.java b/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/storage/WebhookFileListener.java
index fc5230e5b..35a69dd6e 100644
--- a/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/storage/WebhookFileListener.java
+++ b/eventmesh-webhook/eventmesh-webhook-receive/src/main/java/org/apache/eventmesh/webhook/receive/storage/WebhookFileListener.java
@@ -105,7 +105,7 @@ public class WebhookFileListener {
         } catch (IOException e) {
             log.error("cacheInit failed", e);
         }
-        final WebHookConfig webHookConfig = JsonUtils.deserialize(fileContent.toString(), WebHookConfig.class);
+        final WebHookConfig webHookConfig = JsonUtils.parseObject(fileContent.toString(), WebHookConfig.class);
         cacheWebHookConfig.put(webhookConfigFile.getName(), webHookConfig);
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@eventmesh.apache.org
For additional commands, e-mail: commits-help@eventmesh.apache.org