Skip to content

Commit 1270e45

Browse files
alin04copybara-github
authored andcommitted
Fix quote escaping in JsonFormat.print() for FieldMasks.
#24083 PiperOrigin-RevId: 824592626
1 parent 5010153 commit 1270e45

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

java/util/src/main/java/com/google/protobuf/util/JsonFormat.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -932,7 +932,7 @@ private void printDuration(MessageOrBuilder message) throws IOException {
932932
/** Prints google.protobuf.FieldMask */
933933
private void printFieldMask(MessageOrBuilder message) throws IOException {
934934
FieldMask value = FieldMask.parseFrom(toByteString(message));
935-
generator.print("\"" + FieldMaskUtil.toJsonString(value) + "\"");
935+
generator.print(gson.toJson(FieldMaskUtil.toJsonString(value)));
936936
}
937937

938938
/** Prints google.protobuf.Struct */

java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,18 @@ public void testFieldMask() throws Exception {
947947
assertRoundTripEquals(message);
948948
}
949949

950+
@Test
951+
public void testFieldMaskWithQuote() throws Exception {
952+
TestFieldMask message =
953+
TestFieldMask.newBuilder()
954+
.setFieldMaskValue(FieldMaskUtil.fromString("foo.bar,baz,foo_bar.baz,\""))
955+
.build();
956+
957+
assertThat(toJsonString(message))
958+
.isEqualTo("{\n" + " \"fieldMaskValue\": \"foo.bar,baz,fooBar.baz,\\\"\"\n" + "}");
959+
assertRoundTripEquals(message);
960+
}
961+
950962
@Test
951963
public void testStruct() throws Exception {
952964
// Build a struct with all possible values.

0 commit comments

Comments
 (0)