go data_error ai_generated true

proto: (line 1:2): unknown field "unknown_field" in pb.YourMessage

ID: go/protobuf-json-marshal-unknown-field

Also available as: JSON · Markdown · 中文
80%Fix Rate
85%Confidence
0Evidence
2024-08-22First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
1.x active — — —

Root Cause

The JSON input contains a field that is not defined in the protobuf message, and the unmarshaler is configured to reject unknown fields.

generic

中文

JSON 输入包含 protobuf 消息中未定义的字段,且解组器配置为拒绝未知字段。

Workarounds

  1. 95% success
    import "google.golang.org/protobuf/encoding/protojson"
    opts := protojson.UnmarshalOptions{DiscardUnknown: true}
    err := opts.Unmarshal(data, msg)
  2. 90% success
    // Add the field to your .proto file and regenerate.
    // message YourMessage { string unknown_field = 1; }

Dead Ends

Common approaches that don't work:

  1. 60% fail

    This is a temporary fix; the field may reappear or be required by other clients.

  2. 80% fail

    encoding/json does not understand protobuf field names and will produce incorrect results.