Repository: alibaba/fastjson2
Pull request #3583 (2025-06-10 19:50:12)

Bump io.projectreactor:reactor-core from 3.7.4 to 3.7.7
Bumps [io.projectreactor:reactor-core](https://github.com/reactor/reactor-core) from 3.7.4 to 3.7.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/reactor/reactor-core/releases">io.projectreactor:reactor-core's releases</a>.</em></p>
<blockquote>
<h2>v3.7.7</h2>
<!-- raw HTML omitted -->
<p><code>Reactor Core</code> <code>3.7.7</code> is part of <code>2024.0.7</code> <strong>Release Train</strong>.</p>
<h2>What's Changed</h2>
<h3>:sparkles: New features and improvements</h3>
<ul>
<li>Bump io.projectreactor.tools:blockhound from 1.0.11.RELEASE to 1.0.13.RELEASE by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/reactor/reactor-core/issues/4030">#4030</a></li>
<li>Depend on <code>Micrometer</code> <code>1.14.8</code> by <a href="https://github.com/violetagg"><code>@​violetagg</code></a> in 78f477ddc11e7602cf42a19f487fd81d2d70a214</li>
<li>Depend on <code>Micrometer Tracing</code> <code>1.4.7</code> by <a href="https://github.com/violetagg"><code>@​violetagg</code></a> in 78f477ddc11e7602cf42a19f487fd81d2d70a214</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/reactor/reactor-core/compare/v3.7.6...v3.7.7">https://github.com/reactor/reactor-core/compare/v3.7.6...v3.7.7</a></p>
<h2>v3.7.6</h2>
<!-- raw HTML omitted -->
<p><code>Reactor Core</code> <code>3.7.6</code> is part of <code>2024.0.6</code> <strong>Release Train</strong>.</p>
<h2>What's Changed</h2>
<h3>:sparkles: New features and improvements</h3>
<ul>
<li>Bump byteBuddyVersion from 1.17.2 to 1.17.5 by <a href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a href="https://redirect.github.com/reactor/reactor-core/pull/4018">reactor/reactor-core#4018</a></li>
<li>Depend on <code>Micrometer</code> <code>1.14.7</code> by <a href="https://github.com/chemicL"><code>@​chemicL</code></a> in 90909e5010215daca84433d5679eb7705276c3d7</li>
<li>Depend on <code>Micrometer Tracing</code> <code>1.4.6</code> by <a href="https://github.com/chemicL"><code>@​chemicL</code></a> in 90909e5010215daca84433d5679eb7705276c3d7</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/reactor/reactor-core/compare/v3.7.5...v3.7.6">https://github.com/reactor/reactor-core/compare/v3.7.5...v3.7.6</a></p>
<h2>v3.7.5</h2>
<!-- raw HTML omitted -->
<p><code>Reactor Core</code> <code>3.7.5</code> is part of <strong><code>2024.0.5</code> Release Train</strong>.</p>
<h2>What's Changed</h2>
<h3>:sparkles: New features and improvements</h3>
<ul>
<li>Depend on <code>Micrometer</code> <code>1.14.6</code> by <a href="https://github.com/violetagg"><code>@​violetagg</code></a> in cdcba76dccd06fee7402637d505357be2aa836bb</li>
<li>Depend on <code>Micrometer Tracing</code> <code>1.4.5</code> by <a href="https://github.com/violetagg"><code>@​violetagg</code></a> in cdcba76dccd06fee7402637d505357be2aa836bb</li>
<li>Depend on <code>Context Propagation</code> <code>1.1.3</code> by <a href="https://github.com/violetagg"><code>@​violetagg</code></a> in cdcba76dccd06fee7402637d505357be2aa836bb</li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/reactor/reactor-core/compare/v3.7.4...v3.7.5">https://github.com/reactor/reactor-core/compare/v3.7.4...v3.7.5</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/reactor/reactor-core/commit/78f477ddc11e7602cf42a19f487fd81d2d70a214"><code>78f477d</code></a> [release] Prepare and release 3.7.7</li>
<li><a href="https://github.com/reactor/reactor-core/commit/506df5930890270e6c413d25596e8c5b33df3275"><code>506df59</code></a> Merge-ignore release 3.6.18 into 3.7.7</li>
<li><a href="https://github.com/reactor/reactor-core/commit/d66136ee8064185a12c737222c3a63db355c06df"><code>d66136e</code></a> [release] Next development version 3.6.19-SNAPSHOT</li>
<li><a href="https://github.com/reactor/reactor-core/commit/7b20f49580f26434752a35c4349d3fef4ea8891d"><code>7b20f49</code></a> [release] Prepare and release 3.6.18</li>
<li><a href="https://github.com/reactor/reactor-core/commit/cbebd20276b954e6929d18969145c6ded13075f4"><code>cbebd20</code></a> Merge <a href="https://redirect.github.com/reactor/reactor-core/issues/4032">#4032</a> into 3.7.7</li>
<li><a href="https://github.com/reactor/reactor-core/commit/9d2a52e7a7b9bac23f94e349cdabe70a666d8054"><code>9d2a52e</code></a> Bump org.junit:junit-bom from 5.12.2 to 5.13.0 (<a href="https://redirect.github.com/reactor/reactor-core/issues/4032">#4032</a>)</li>
<li><a href="https://github.com/reactor/reactor-core/commit/c008dcdbbcf66807b7a8f1f4802d9029f7c1177e"><code>c008dcd</code></a> Merge <a href="https://redirect.github.com/reactor/reactor-core/issues/4030">#4030</a> into 3.7.7</li>
<li><a href="https://github.com/reactor/reactor-core/commit/0610f5574a65f866d47e50f4bb5ab3cb8f2fb11a"><code>0610f55</code></a> Bump io.projectreactor.tools:blockhound from 1.0.11.RELEASE to 1.0.13.RELEASE...</li>
<li><a href="https://github.com/reactor/reactor-core/commit/bbc09d15f1e6b11c64c68604be488b0ca0487031"><code>bbc09d1</code></a> Merge <a href="https://redirect.github.com/reactor/reactor-core/issues/4029">#4029</a> into 3.7.7</li>
<li><a href="https://github.com/reactor/reactor-core/commit/0360f36515afd632e4d3c6ccc4d450cc6c5c9001"><code>0360f36</code></a> Bump org.gradle.toolchains.foojay-resolver-convention from 0.10.0 to 1.0.0 (#...</li>
<li>Additional commits viewable in <a href="https://github.com/reactor/reactor-core/compare/v3.7.4...v3.7.7">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=io.projectreactor:reactor-core&package-manager=maven&previous-version=3.7.4&new-version=3.7.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

codecov-commenter: ## [Codecov](https://app.codecov.io/gh/alibaba/fastjson2/pull/3583?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=alibaba) Report
All modified and coverable lines are covered by tests :white_check_mark:
> Project coverage is 72.77%. Comparing base [(`ab36a71`)](https://app.codecov.io/gh/alibaba/fastjson2/commit/ab36a7104c38cc557dab34e22eb4fded8734dd17?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=alibaba) to head [(`78ecc75`)](https://app.codecov.io/gh/alibaba/fastjson2/commit/78ecc75ce771a51a7f9a5db4cc16b0f4e848a545?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=alibaba).
> Report is 5 commits behind head on main.

<details><summary>Additional details and impacted files</summary>


```diff
@@             Coverage Diff              @@
##               main    #3583      +/-   ##
============================================
- Coverage     73.77%   72.77%   -1.00%     
+ Complexity    23820    23354     -466     
============================================
  Files           682      670      -12     
  Lines         90839    89961     -878     
  Branches      20658    20454     -204     
============================================
- Hits          67015    65468    -1547     
- Misses        15519    16162     +643     
- Partials       8305     8331      +26     
```

</details>

[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/alibaba/fastjson2/pull/3583?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=alibaba).   
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=alibaba).

<details><summary> :rocket: New features to boost your workflow: </summary>

- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
</details>

Patch:
diff --git a/core/src/main/java/com/alibaba/fastjson2/reader/ObjectReaderBaseModule.java b/core/src/main/java/com/alibaba/fastjson2/reader/ObjectReaderBaseModule.java
index 55a47a052..f139c7e7a 100644
--- a/core/src/main/java/com/alibaba/fastjson2/reader/ObjectReaderBaseModule.java
+++ b/core/src/main/java/com/alibaba/fastjson2/reader/ObjectReaderBaseModule.java
@@ -282,11 +282,6 @@ public class ObjectReaderBaseModule
                             processJacksonJsonFormat(beanInfo, annotation);
                         }
                         break;
-                    case "com.fasterxml.jackson.annotation.JsonInclude":
-                        if (useJacksonAnnotation) {
-                            processJacksonJsonInclude(beanInfo, annotation);
-                        }
-                        break;
                     case "com.fasterxml.jackson.annotation.JsonSubTypes":
                         if (useJacksonAnnotation) {
                             processJacksonJsonSubTypes(beanInfo, annotation);
@@ -859,11 +854,6 @@ public class ObjectReaderBaseModule
                             processGsonSerializedName(fieldInfo, annotation);
                         }
                         break;
-                    case "com.fasterxml.jackson.annotation.JsonInclude":
-                        if (useJacksonAnnotation) {
-                            processJacksonJsonInclude(fieldInfo, annotation);
-                        }
-                        break;
                     default:
                         break;
                 }
diff --git a/pom.xml b/pom.xml
index 7e153a469..a7cef5923 100644
--- a/pom.xml
+++ b/pom.xml
@@ -280,7 +280,7 @@
             <dependency>
                 <groupId>io.projectreactor</groupId>
                 <artifactId>reactor-core</artifactId>
-                <version>3.7.4</version>
+                <version>3.7.7</version>
             </dependency>
             <dependency>
                 <groupId>io.springfox</groupId>


Test patch:
diff --git a/core/src/test/java/com/alibaba/fastjson2/issues_3500/Issue3577.java b/core/src/test/java/com/alibaba/fastjson2/issues_3500/Issue3577.java
new file mode 100644
index 000000000..2264dc737
--- /dev/null
+++ b/core/src/test/java/com/alibaba/fastjson2/issues_3500/Issue3577.java
@@ -0,0 +1,92 @@
+package com.alibaba.fastjson2.issues_3500;
+
+import com.alibaba.fastjson2.JSON;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import org.junit.jupiter.api.Test;
+
+import java.io.Serializable;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+public class Issue3577 {
+    @Test
+    public void test() {
+        String json = "{            \n" +
+                "            \"certifiedMaterials\": {\n" +
+                "              \"show\": false,\n" +
+                "              \"materials\": []\n" +
+                "            }\n" +
+                "          }";
+
+        ColorBrandsProduct dto = JSON.parseObject(json, ColorBrandsProduct.class);
+        assertNotNull(dto);
+        assertNull(dto.getCertifiedMaterials().getContainsAtLeastTitle());
+    }
+
+    @JsonPropertyOrder(ColorBrandsProduct.JSON_PROPERTY_CERTIFIED_MATERIALS)
+    @JsonTypeName("Color")
+    public static class ColorBrandsProduct
+            implements Serializable {
+        private static final long serialVersionUID = 1L;
+        public static final String JSON_PROPERTY_CERTIFIED_MATERIALS = "certifiedMaterials";
+        private CertifiedMaterialsBrandsProduct certifiedMaterials;
+        public ColorBrandsProduct certifiedMaterials(CertifiedMaterialsBrandsProduct certifiedMaterials) {
+            this.certifiedMaterials = certifiedMaterials;
+            return this;
+        }
+
+        /**
+         * Get certifiedMaterials
+         *
+         * @return certifiedMaterials
+         **/
+        @JsonProperty(JSON_PROPERTY_CERTIFIED_MATERIALS)
+        @JsonInclude(value = JsonInclude.Include.ALWAYS)
+
+        public CertifiedMaterialsBrandsProduct getCertifiedMaterials() {
+            return certifiedMaterials;
+        }
+
+        @JsonProperty(JSON_PROPERTY_CERTIFIED_MATERIALS)
+        @JsonInclude(value = JsonInclude.Include.ALWAYS)
+        public void setCertifiedMaterials(CertifiedMaterialsBrandsProduct certifiedMaterials) {
+            this.certifiedMaterials = certifiedMaterials;
+        }
+    }
+
+    @JsonPropertyOrder(CertifiedMaterialsBrandsProduct.JSON_PROPERTY_CONTAINS_AT_LEAST_TITLE)
+    @JsonTypeName("CertifiedMaterials")
+    public static class CertifiedMaterialsBrandsProduct
+            implements Serializable {
+        private static final long serialVersionUID = 1L;
+
+        public static final String JSON_PROPERTY_CONTAINS_AT_LEAST_TITLE = "containsAtLeastTitle";
+        private String containsAtLeastTitle;
+
+        public CertifiedMaterialsBrandsProduct containsAtLeastTitle(String containsAtLeastTitle) {
+            this.containsAtLeastTitle = containsAtLeastTitle;
+            return this;
+        }
+
+        /**
+         * Title that says \&quot;contains at least\&quot;, translated to the given store language.
+         *
+         * @return containsAtLeastTitle
+         **/
+        @JsonProperty(JSON_PROPERTY_CONTAINS_AT_LEAST_TITLE)
+        // @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+
+        public String getContainsAtLeastTitle() {
+            return containsAtLeastTitle;
+        }
+
+        @JsonProperty(JSON_PROPERTY_CONTAINS_AT_LEAST_TITLE)
+        @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
+        public void setContainsAtLeastTitle(String containsAtLeastTitle) {
+            this.containsAtLeastTitle = containsAtLeastTitle;
+        }
+    }
+}