Skip to content

Commit

Permalink
fix JSONType & JSONField WriteNonStringValueAsString feature not work…
Browse files Browse the repository at this point in the history
…, for issue #2431
  • Loading branch information
wenshao committed Apr 13, 2024
1 parent 4426484 commit d2058ab
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3179,7 +3179,7 @@ public final void writeString(int value) {

@Override
public final void writeString(long value) {
boolean writeAsString = (context.features & WriteNonStringValueAsString.mask) == 0;
boolean writeAsString = (context.features & (WriteNonStringValueAsString.mask | WriteLongAsString.mask)) == 0;
if (writeAsString) {
writeQuote();
}
Expand Down
8 changes: 4 additions & 4 deletions core/src/main/java/com/alibaba/fastjson2/JSONWriterUTF8.java
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ public final void writeString(boolean value) {

@Override
public final void writeString(byte value) {
boolean writeAsString = (context.features & WriteNonStringValueAsString.mask) != 0;
boolean writeAsString = (context.features & WriteNonStringValueAsString.mask) == 0;
if (writeAsString) {
writeQuote();
}
Expand All @@ -387,7 +387,7 @@ public final void writeString(byte value) {

@Override
public final void writeString(short value) {
boolean writeAsString = (context.features & WriteNonStringValueAsString.mask) != 0;
boolean writeAsString = (context.features & WriteNonStringValueAsString.mask) == 0;
if (writeAsString) {
writeQuote();
}
Expand All @@ -399,7 +399,7 @@ public final void writeString(short value) {

@Override
public final void writeString(int value) {
boolean writeAsString = (context.features & WriteNonStringValueAsString.mask) != 0;
boolean writeAsString = (context.features & WriteNonStringValueAsString.mask) == 0;
if (writeAsString) {
writeQuote();
}
Expand All @@ -411,7 +411,7 @@ public final void writeString(int value) {

@Override
public final void writeString(long value) {
boolean writeAsString = (context.features & WriteNonStringValueAsString.mask) != 0;
boolean writeAsString = (context.features & (WriteNonStringValueAsString.mask | WriteLongAsString.mask)) == 0;
if (writeAsString) {
writeQuote();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@ public void test() {
"{\"b\":\"1\",\"d\":\"1.0\",\"f\":\"1.0\",\"i\":\"1\",\"l\":\"1\",\"s\":\"1\",\"z\":\"false\"}",
JSON.toJSONString(bean));

assertEquals(
"{\"b\":\"1\",\"d\":\"1.0\",\"f\":\"1.0\",\"i\":\"1\",\"l\":\"1\",\"s\":\"1\",\"z\":\"false\"}",
new String(JSON.toJSONBytes(bean)));

byte[] bytes = JSONB.toBytes(bean);
String str2 = JSONB.toJSONString(bytes);
assertEquals("{\n" +
Expand Down Expand Up @@ -66,6 +70,10 @@ public void test1() {
"{\"b\":\"1\",\"d\":\"1.0\",\"f\":\"1.0\",\"i\":\"1\",\"l\":\"1\",\"s\":\"1\",\"z\":\"false\"}",
JSON.toJSONString(bean));

assertEquals(
"{\"b\":\"1\",\"d\":\"1.0\",\"f\":\"1.0\",\"i\":\"1\",\"l\":\"1\",\"s\":\"1\",\"z\":\"false\"}",
new String(JSON.toJSONBytes(bean)));

byte[] bytes = JSONB.toBytes(bean);
String str2 = JSONB.toJSONString(bytes);
assertEquals("{\n" +
Expand Down Expand Up @@ -106,6 +114,14 @@ public void test2() {
"{\"bs\":[\"1\"],\"ds\":[\"1.0\"],\"fs\":[\"1.0\"],\"is\":[\"1\"],\"ls\":[\"1\"],\"ss\":[\"1\"],\"zs\":[\"false\"]}",
JSON.toJSONString(bean));

assertEquals(
"{\"bs\":[\"1\"],\"ds\":[\"1.0\"],\"fs\":[\"1.0\"],\"is\":[\"1\"],\"ls\":[\"1\"],\"ss\":[\"1\"],\"zs\":[\"false\"]}",
new String(JSON.toJSONBytes(bean)));

assertEquals(
"{\"bs\":[\"1\"],\"ds\":[\"1.0\"],\"fs\":[\"1.0\"],\"is\":[\"1\"],\"ls\":[\"1\"],\"ss\":[\"1\"],\"zs\":[\"false\"]}",
new String(JSON.toJSONBytes(bean)));

byte[] bytes = JSONB.toBytes(bean);
String str2 = JSONB.toJSONString(bytes);
assertEquals("{\n" +
Expand Down Expand Up @@ -146,6 +162,10 @@ public void test3() {
"{\"bs\":[\"1\"],\"ds\":[\"1.0\"],\"fs\":[\"1.0\"],\"is\":[\"1\"],\"ls\":[\"1\"],\"ss\":[\"1\"],\"zs\":[\"false\"]}",
JSON.toJSONString(bean));

assertEquals(
"{\"bs\":[\"1\"],\"ds\":[\"1.0\"],\"fs\":[\"1.0\"],\"is\":[\"1\"],\"ls\":[\"1\"],\"ss\":[\"1\"],\"zs\":[\"false\"]}",
new String(JSON.toJSONBytes(bean)));

byte[] bytes = JSONB.toBytes(bean);
String str2 = JSONB.toJSONString(bytes);
assertEquals("{\n" +
Expand Down Expand Up @@ -186,6 +206,10 @@ public void test4() {
"{\"bs\":[\"1\"],\"ds\":[\"1.0\"],\"fs\":[\"1.0\"],\"is\":[\"1\"],\"ls\":[\"1\"],\"ss\":[\"1\"],\"zs\":[\"false\"]}",
JSON.toJSONString(bean));

assertEquals(
"{\"bs\":[\"1\"],\"ds\":[\"1.0\"],\"fs\":[\"1.0\"],\"is\":[\"1\"],\"ls\":[\"1\"],\"ss\":[\"1\"],\"zs\":[\"false\"]}",
new String(JSON.toJSONBytes(bean)));

byte[] bytes = JSONB.toBytes(bean);
String str2 = JSONB.toJSONString(bytes);
assertEquals("{\n" +
Expand Down

0 comments on commit d2058ab

Please sign in to comment.