Skip to content

Commit adbfb28

Browse files
authored
fix(compat): add ParserConfig.propertyNamingStrategy for fastjson 1.x compat (#7740)
fastjson 1.x ParserConfig exposes a public propertyNamingStrategy field that migration code assigns directly, but the compat package lacked it, raising NoSuchFieldError. Add the field, mirroring SerializeConfig#propertyNamingStrategy which already exists for the same compatibility reason.
1 parent dc425ec commit adbfb28

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

fastjson1-compatible/src/main/java/com/alibaba/fastjson/parser/ParserConfig.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.alibaba.fastjson.parser;
22

3+
import com.alibaba.fastjson.PropertyNamingStrategy;
34
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
45
import com.alibaba.fastjson2.JSONException;
56
import com.alibaba.fastjson2.JSONFactory;
@@ -24,6 +25,13 @@ public static ParserConfig getGlobalInstance() {
2425

2526
final ObjectReaderProvider provider;
2627
public final boolean fieldBase;
28+
/**
29+
* Mirrors fastjson 1.x's public field so migration code that assigns it directly
30+
* (e.g. {@code parserConfig.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;})
31+
* no longer raises {@link NoSuchFieldError}. Kept for source/binary compatibility,
32+
* matching {@link com.alibaba.fastjson.serializer.SerializeConfig#propertyNamingStrategy}.
33+
*/
34+
public PropertyNamingStrategy propertyNamingStrategy;
2735
private boolean asmEnable;
2836
private boolean autoTypeSupport;
2937

fastjson1-compatible/src/test/java/com/alibaba/fastjson/parser/ParserConfigTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.alibaba.fastjson.parser;
22

3+
import com.alibaba.fastjson.PropertyNamingStrategy;
34
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
45
import com.alibaba.fastjson2.JSONFactory;
56
import com.alibaba.fastjson2.JSONObject;
@@ -71,4 +72,16 @@ public void test2() {
7172

7273
assertSame(JSONFactory.getDefaultObjectReaderProvider(), ParserConfig.getGlobalInstance().provider);
7374
}
75+
76+
@Test
77+
public void propertyNamingStrategyField() {
78+
// Regression for issue #7704: fastjson 1.x ParserConfig exposes a public
79+
// propertyNamingStrategy field; migration code assigns it directly. The compat
80+
// package previously lacked the field, raising NoSuchFieldError. Mirror what
81+
// SerializeConfig already exposes.
82+
ParserConfig config = new ParserConfig();
83+
assertNull(config.propertyNamingStrategy);
84+
config.propertyNamingStrategy = PropertyNamingStrategy.SnakeCase;
85+
assertSame(PropertyNamingStrategy.SnakeCase, config.propertyNamingStrategy);
86+
}
7487
}

0 commit comments

Comments
 (0)