Coverage Report

Created: 2025-09-05 06:37

/src/swift-protobuf/Sources/SwiftProtobuf/CustomJSONCodable.swift
Line
Count
Source
1
// Sources/SwiftProtobuf/CustomJSONCodable.swift - Custom JSON support for WKTs
2
//
3
// Copyright (c) 2014 - 2017 Apple Inc. and the project authors
4
// Licensed under Apache License v2.0 with Runtime Library Exception
5
//
6
// See LICENSE.txt for license information:
7
// https://github.com/apple/swift-protobuf/blob/main/LICENSE.txt
8
//
9
// -----------------------------------------------------------------------------
10
///
11
/// Custom protocol for the WKTs to support their custom JSON encodings.
12
///
13
// -----------------------------------------------------------------------------
14
15
/// Allows WKTs to provide their custom JSON encodings.
16
internal protocol _CustomJSONCodable {
17
    func encodedJSONString(options: JSONEncodingOptions) throws -> String
18
    mutating func decodeJSON(from: inout JSONDecoder) throws
19
20
    /// Called when the JSON `null` literal is encountered in a position where
21
    /// a message of the conforming type is expected. The message type can then
22
    /// handle the `null` value differently, if needed; for example,
23
    /// `Google_Protobuf_Value` returns a special instance whose `kind` is set to
24
    /// `.nullValue(.nullValue)`.
25
    ///
26
    /// The default behavior is to return `nil`, which indicates that `null`
27
    /// should be treated as the absence of a message.
28
    static func decodedFromJSONNull() throws -> Self?
29
}
30
31
extension _CustomJSONCodable {
32
3.09k
    internal static func decodedFromJSONNull() -> Self? {
33
3.09k
        // Return nil by default. Concrete types can provide custom logic.
34
3.09k
        nil
35
3.09k
    }
36
}