JsonFormat

scalapb.ujson.JsonFormat
See theJsonFormat companion object
class JsonFormat(val preserveProtoFieldNames: Boolean, val includeDefaultValueFields: Boolean, val formatEnumsAsNumbers: Boolean)

Utility for writing and reading ScalaPB-generated messages to and from JSON via the ujson library.

This utility is designed around ujson's visitors. This means that intermediate data structures are avoided as much as reasonably possible, and therefore memory usage is kept low and performance should be very good for conversions. For example, if you write a ScalaPB message to a JSON string, the message will be transformed into a string directly, without passing through an intermediate JSON tree structure. Or, if you write a message to a stream, the message is written on demand and no full JSON string needs to be generated beforehand. // TODO: check this latter claim, I'm not sure if upickle's renderers actually uphold this

Attributes

formatEnumsAsNumbers

Default false. Use enum values' numbers instead of their names.

includeDefaultValueFields

Default true. If set, then fields of messages are always included in JSON, even if they are not set or correspond to the default protobuf value.

preserveProtoFieldNames

Default true. If set, then the field names of protobuf messages are used as-is (this means usually snake_case). Otherwise, they are converted to camelCase.

Companion:
object
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object JsonFormat.type

Members list

Concise view

Type members

Classlikes

object Writer extends Transformer[GeneratedMessage]

Attributes

Graph
Supertypes
trait Transformer[GeneratedMessage]
class Object
trait Matchable
class Any
Self type
Writer.type

Value members

Concrete methods

def read[A <: GeneratedMessage](json: Readable)(using companion: GeneratedMessageCompanion[A]): A
def write(message: GeneratedMessage, indent: Int, escapeUnicode: Boolean): String
def writeTo(message: GeneratedMessage, out: Writer, indent: Int, escapeUnicode: Boolean): Unit
def writeToByteArray(message: GeneratedMessage, indent: Int, escapeUnicode: Boolean): Array[Byte]
def writeToJson(message: GeneratedMessage, indent: Int, escapeUnicode: Boolean): Value
def writeToOutputStream(message: GeneratedMessage, out: OutputStream, indent: Int, escapeUnicode: Boolean): Unit

Concrete fields