diff --git a/src/main/java/com/alibaba/fastjson/JSONPath.java b/src/main/java/com/alibaba/fastjson/JSONPath.java index a8cc592d93..d5b8342426 100644 --- a/src/main/java/com/alibaba/fastjson/JSONPath.java +++ b/src/main/java/com/alibaba/fastjson/JSONPath.java @@ -3848,6 +3848,9 @@ protected Object getPropertyValue(Object currentObject, String propertyName, lon if (currentObject instanceof String) { try { JSONObject object = (JSONObject) JSON.parse((String) currentObject, parserConfig); + if (object == null) { + return null; + } currentObject = object; } catch (Exception ex) { // skip diff --git a/src/test/java/com/alibaba/fastjson/jsonpath/issue4385/TestIssue4385.java b/src/test/java/com/alibaba/fastjson/jsonpath/issue4385/TestIssue4385.java new file mode 100644 index 0000000000..6c608020b9 --- /dev/null +++ b/src/test/java/com/alibaba/fastjson/jsonpath/issue4385/TestIssue4385.java @@ -0,0 +1,21 @@ +package com.alibaba.fastjson.jsonpath.issue4385; + +import org.junit.Assert; +import org.junit.Test; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.JSONPath; + +/** + * @author vdisk + */ +public class TestIssue4385 { + + @Test + public void testIssue4385() { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("key1", ""); + Object value = JSONPath.eval(jsonObject, "$.key1.key2"); + Assert.assertNull(value); + } +}