Skip to content

Commit b8359c6

Browse files
committed
Adds a serializing option to backslash escape forward slashes. This is for issue johnezang#21.
1 parent e1cb174 commit b8359c6

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

JSONKit.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,11 @@ enum {
126126
typedef JKFlags JKParseOptionFlags;
127127

128128
enum {
129-
JKSerializeOptionNone = 0,
130-
JKSerializeOptionPretty = (1 << 0),
131-
JKSerializeOptionEscapeUnicode = (1 << 1),
132-
JKSerializeOptionValidFlags = (JKSerializeOptionPretty | JKSerializeOptionEscapeUnicode),
129+
JKSerializeOptionNone = 0,
130+
JKSerializeOptionPretty = (1 << 0),
131+
JKSerializeOptionEscapeUnicode = (1 << 1),
132+
JKSerializeOptionEscapeForwardSlashes = (1 << 4),
133+
JKSerializeOptionValidFlags = (JKSerializeOptionPretty | JKSerializeOptionEscapeUnicode | JKSerializeOptionEscapeForwardSlashes),
133134
};
134135
typedef JKFlags JKSerializeOptionFlags;
135136

JSONKit.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2604,7 +2604,7 @@ static int jk_encode_add_atom_to_buffer(JKEncodeState *encodeState, void *object
26042604
default: if(JK_EXPECT_F(jk_encode_printf(encodeState, NULL, 0UL, NULL, "\\u%4.4x", utf8String[utf8Idx]))) { return(1); } break;
26052605
}
26062606
} else {
2607-
if(JK_EXPECT_F(utf8String[utf8Idx] == '\"') || JK_EXPECT_F(utf8String[utf8Idx] == '\\')) { encodeState->stringBuffer.bytes.ptr[encodeState->atIndex++] = '\\'; }
2607+
if(JK_EXPECT_F(utf8String[utf8Idx] == '\"') || JK_EXPECT_F(utf8String[utf8Idx] == '\\') || (JK_EXPECT_F(encodeState->serializeOptionFlags & JKSerializeOptionEscapeForwardSlashes) && JK_EXPECT_F(utf8String[utf8Idx] == '/'))) { encodeState->stringBuffer.bytes.ptr[encodeState->atIndex++] = '\\'; }
26082608
encodeState->stringBuffer.bytes.ptr[encodeState->atIndex++] = utf8String[utf8Idx];
26092609
}
26102610
}
@@ -2658,7 +2658,7 @@ static int jk_encode_add_atom_to_buffer(JKEncodeState *encodeState, void *object
26582658
else { if(JK_EXPECT_F(jk_encode_printf(encodeState, NULL, 0UL, NULL, "\\u%4.4x\\u%4.4x", (0xd7c0U + (u32ch >> 10)), (0xdc00U + (u32ch & 0x3ffU))))) { return(1); } }
26592659
}
26602660
} else {
2661-
if(JK_EXPECT_F(utf8String[utf8Idx] == '\"') || JK_EXPECT_F(utf8String[utf8Idx] == '\\')) { encodeState->stringBuffer.bytes.ptr[encodeState->atIndex++] = '\\'; }
2661+
if(JK_EXPECT_F(utf8String[utf8Idx] == '\"') || JK_EXPECT_F(utf8String[utf8Idx] == '\\') || (JK_EXPECT_F(encodeState->serializeOptionFlags & JKSerializeOptionEscapeForwardSlashes) && JK_EXPECT_F(utf8String[utf8Idx] == '/'))) { encodeState->stringBuffer.bytes.ptr[encodeState->atIndex++] = '\\'; }
26622662
encodeState->stringBuffer.bytes.ptr[encodeState->atIndex++] = utf8String[utf8Idx];
26632663
}
26642664
}

0 commit comments

Comments
 (0)