fix fastjson 1.x compatible, for issue #3649
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, macos-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, ubuntu-24.04) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, windows-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, macos-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, ubuntu-24.04) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, windows-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, macos-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, ubuntu-24.04) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, windows-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, macos-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, ubuntu-24.04) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, windows-latest) (push) Has been cancelled Details

This commit is contained in:
wenshao 2025-07-23 17:24:49 +08:00
parent 8fc695b65b
commit f17c3b56e6
3 changed files with 91 additions and 3 deletions

View File

@ -515,7 +515,11 @@ public class ObjectWriterCreator {
sameFieldName = (char) (firstChar - 32) + fieldName.substring(1);
}
if (sameFieldName != null) {
fieldWriterMap.remove(sameFieldName);
FieldWriter sameNameFieldWriter = fieldWriterMap.get(sameFieldName);
if (sameNameFieldWriter != null
&& (sameNameFieldWriter.method == null || sameNameFieldWriter.method.equals(method))) {
fieldWriterMap.remove(sameFieldName);
}
}
}
});

View File

@ -371,8 +371,7 @@ public class ObjectWriterCreatorASM
if (sameFieldName != null) {
FieldWriter sameNameFieldWriter = fieldWriterMap.get(sameFieldName);
if (sameNameFieldWriter != null
&& sameNameFieldWriter.method != null
&& sameNameFieldWriter.method.equals(method)) {
&& (sameNameFieldWriter.method == null || sameNameFieldWriter.method.equals(method))) {
fieldWriterMap.remove(sameFieldName);
}
}

View File

@ -32,4 +32,89 @@ public class Issue3649 {
return userName;
}
}
@Test
public void test1() {
UserDTO1 user = new UserDTO1();
user.setUserName("张三");
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(user));
assertEquals(2, jsonObject.size());
assertEquals(user.getUserName(), jsonObject.getString("UserName"));
assertEquals(user.getUserName(), jsonObject.getString("userName"));
}
@Data
public static class UserDTO1 {
private String userName;
@JSONField(name = "UserName")
public String getTheUserName() {
return userName;
}
private String field1;
private String field2;
private String field3;
private String field4;
private String field5;
private String field6;
private String field7;
private String field8;
private String field9;
private String field10;
private String field11;
private String field12;
private String field13;
private String field14;
private String field15;
private String field16;
private String field17;
private String field18;
private String field19;
private String field20;
private String field21;
private String field22;
private String field23;
private String field24;
private String field25;
private String field26;
private String field27;
private String field28;
private String field29;
private String field30;
private String field31;
private String field32;
private String field33;
private String field34;
private String field35;
private String field36;
private String field37;
private String field38;
private String field39;
private String field40;
private String field41;
private String field42;
private String field43;
private String field44;
private String field45;
private String field46;
private String field47;
private String field48;
private String field49;
private String field50;
private String field51;
private String field52;
private String field53;
private String field54;
private String field55;
private String field56;
private String field57;
private String field58;
private String field59;
private String field60;
private String field61;
//第62个序列化是2个
private String field62;
//第63个序列化是1个
private String field63;
}
}