diff --git a/bom/pom.xml b/bom/pom.xml
index a97d8cc8f..556c4f14f 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -60,6 +60,7 @@
true
true
+ 1.2.83
@@ -444,6 +445,11 @@
sofa-common-tools
${sofa.common.tools.version}
+
+ com.alibaba
+ fastjson
+ ${fastjson.version}
+
commons-lang
commons-lang
diff --git a/core/common/pom.xml b/core/common/pom.xml
index 643f4866d..1cee02320 100644
--- a/core/common/pom.xml
+++ b/core/common/pom.xml
@@ -34,6 +34,11 @@
slf4j-log4j12
test
+
+
+ com.alibaba
+ fastjson
+
diff --git a/core/common/src/main/java/com/alipay/sofa/rpc/common/utils/FastjsonUtils.java b/core/common/src/main/java/com/alipay/sofa/rpc/common/utils/FastjsonUtils.java
new file mode 100644
index 000000000..8b2c6e7a2
--- /dev/null
+++ b/core/common/src/main/java/com/alipay/sofa/rpc/common/utils/FastjsonUtils.java
@@ -0,0 +1,83 @@
+/*
+ * 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 com.alipay.sofa.rpc.common.utils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONException;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONPath;
+import com.alibaba.fastjson.TypeReference;
+import com.alibaba.fastjson.parser.Feature;
+import com.alibaba.fastjson.parser.ParserConfig;
+import com.alibaba.fastjson.serializer.SerializerFeature;
+
+import java.lang.reflect.Type;
+
+/**
+ * Fastjson 工具类
+ *
+ * @author chengming
+ * @version FastjsonUtils.java, v 0.1 2024年03月14日 1:36 PM chengming
+ */
+public class FastjsonUtils {
+
+ private static final ParserConfig safeParserConfig = new ParserConfig();
+
+ public FastjsonUtils() {
+ }
+
+ public static ParserConfig getSafeInstance() {
+ return safeParserConfig;
+ }
+
+ public String toJSONString(Object obj) {
+ return JSON.toJSONString(obj, SerializerFeature.DisableCircularReferenceDetect);
+ }
+
+ public T toJavaObject(String json, Type type) {
+ return JSON.parseObject(json, type);
+ }
+
+ public static JSONObject parseObject(String text) {
+ Object obj = JSON.parse(text, safeParserConfig);
+ if (obj instanceof JSONObject) {
+ return (JSONObject) obj;
+ } else {
+ try {
+ return (JSONObject) JSON.toJSON(obj);
+ } catch (RuntimeException var3) {
+ throw new JSONException("can not cast to JSONObject.", var3);
+ }
+ }
+ }
+
+ public static T parseObject(String text, Class clazz) {
+ return JSON.parseObject(text, clazz, safeParserConfig, null, JSON.DEFAULT_PARSER_FEATURE, new Feature[0]);
+ }
+
+ public static T parseObject(String text, TypeReference type, Feature... features) {
+ return JSON.parseObject(text, type.getType(), safeParserConfig, JSON.DEFAULT_PARSER_FEATURE, features);
+ }
+
+ public static Object read(String json, String path) {
+ return JSONPath.compile(path).eval(JSON.parse(json, safeParserConfig));
+ }
+
+ static {
+ safeParserConfig.setSafeMode(true);
+ }
+}
\ No newline at end of file
diff --git a/core/common/src/test/java/com/alipay/sofa/rpc/common/utils/FastjsonUtilsTest.java b/core/common/src/test/java/com/alipay/sofa/rpc/common/utils/FastjsonUtilsTest.java
new file mode 100644
index 000000000..3a5f3f760
--- /dev/null
+++ b/core/common/src/test/java/com/alipay/sofa/rpc/common/utils/FastjsonUtilsTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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 com.alipay.sofa.rpc.common.utils;
+
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.TypeReference;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.Map;
+
+import static org.junit.Assert.assertEquals;
+
+public class FastjsonUtilsTest {
+
+ private FastjsonUtils fastjsonUtilsTest;
+
+ @Before
+ public void setUp() throws Exception {
+ fastjsonUtilsTest = new FastjsonUtils();
+ }
+
+ @Test
+ public void testToJSONString() {
+ assertEquals("obj", fastjsonUtilsTest.toJSONString("obj"));
+ }
+
+ @Test
+ public void testToJSONStringWithObject() {
+ assertEquals("{\"age\":1,\"name\":\"name\"}", fastjsonUtilsTest.toJSONString(new TestClass(1, "name")));
+ }
+
+ @Test
+ public void testParseObject() {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("age", 1);
+ jsonObject.put("name", "name");
+ assertEquals(jsonObject, FastjsonUtils.parseObject("{\"age\":1,\"name\":\"name\"}"));
+ }
+
+ @Test
+ public void testParseObjectWithObject() {
+ TestClass testClass = FastjsonUtils.parseObject("{\"age\":1,\"name\":\"name\"}", TestClass.class);
+ assertEquals(1, testClass.age);
+ assertEquals("name", testClass.name);
+ }
+
+ @Test
+ public void testParseObjectWithMap() {
+ Map map = FastjsonUtils.parseObject("{\"age\":1,\"name\":\"name\"}",
+ new TypeReference