Incorrect JSON serialization of repeated int64
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Beginne damit, das Problem mit dem generierten ExampleContract und seinem Aufruf to_json() zu reproduzieren, wobei wiederholte int64-Elemente mit dem umhüllten Standardfeld verglichen werden. Verfolge den vom generierten Python-Message verwendeten JSON-Serialisierungspfad. Die Aufgabe ist abgeschlossen, wenn wiederholte int64-Werte als numerische JSON-Werte serialisiert werden, sodass sie der erwarteten Ausgabe entsprechen, ohne das Verhalten des umhüllten Feldes zu ändern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Summary
When I create a contract with a repeated int64 variable, it serializes into repeated string, which is an unpredictable behaviour
Reproduction Steps
- Create a contract:
// ExampleContract describes example of contract.
message ExampleContract {
// List of int64.
repeated int64 items = 1;
// Default int64 value.
google.protobuf.Int64Value default = 2;
}
- Compile to python:
@dataclass(eq=False, repr=False)
class ExampleContract(betterproto.Message):
"""
ExampleContract describes example of contract.
"""
items: List[int] = betterproto.int64_field(1)
"""List of int64."""
default: Optional[int] = betterproto.message_field(2, wraps=betterproto.TYPE_INT64)
"""Default int64 value."""
- Create instance of class and serialize it to JSON:
ec = ExampleContract(items=[5, 10], default=10)
print(ec.to_json())
Expected Results
{"items": [5, 10], "default": 10}
Actual Results
{"items": ["5", "10"], "default": 10}
System Information
libprotoc 25.3, Python 3.12.7
Name: betterproto
Version: 2.0.0b7
Summary: A better Protobuf / gRPC generator & library
Home-page: https://github.com/danielgtaylor/python-betterproto
Author: Daniel G. Taylor
Author-email: [email protected]
License: MIT
Location: /opt/conda/lib/python3.12/site-packages
Requires: grpclib, python-dateutil, typing-extensions
Checklist
- I have searched the issues for duplicates.
- I have shown the entire traceback, if possible.
- I have verified this issue occurs on the latest prelease of betterproto which can be installed using
pip install -U --pre betterproto, if possible.
- Vorherrschende Sprache
- Python
- Sterne
- 1.8k
- Forks
- 235
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus danielgtaylor/python-betterproto
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 55/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 15/100
-
bug investigation needed
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 42/100
-
bug investigation needed
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 38/100
danielgtaylor/python-betterproto#676 · 3 Kommentare ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 10/100
danielgtaylor/python-betterproto#673 · 1 Kommentar ·
Alle Issues in danielgtaylor/python-betterproto
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
zach-blumenfeld/aip#13 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 80/100
nathanmarlor/foxess_modbus#1287 ·
Maintainer antworten meist innerhalb von 4 Tagen
-
bug good first issue help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
OpenLakeForge/openlakeforge#498 ·
Maintainer antworten meist innerhalb von 1 Tag
-
good first issue hacktoberfest help wanted python
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 73/100
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 69/100
pollen-robotics/reachy_mini#1493 ·
Maintainer antworten meist innerhalb von 1 Tag