def test_json(): account = Account(id=1, name=2) user = User(1, 2, account) payload = json.dumps(user) deser = json.loads(payload) assert deser == { "id": 1, "username": 2, "account": { "id": 1, "name": 2, "active": True, "__faust": { "ns": Account._options.namespace }, }, "__faust": { "ns": User._options.namespace }, } assert user.__json__() == { "id": 1, "username": 2, "account": account, "__faust": { "ns": User._options.namespace }, } assert User.from_data(deser) == user
def json( self, value: Any, *, content_type: str = None, status: int = 200, reason: str = None, headers: MutableMapping = None, ) -> Any: """Create new JSON response. Accepts any JSON-serializable value and will automatically serialize it for you. The content-type is set to "application/json". """ ctype = content_type or "application/json" payload: Any = _json.dumps(value) # normal json returns str, orjson returns bytes if isinstance(payload, bytes): return self.bytes( payload, content_type=ctype, status=status, reason=reason, headers=headers, ) else: return self.text( payload, content_type=ctype, status=status, reason=reason, headers=headers, )
def test_loads_key_missing_key_raises_error(*, app): account = ACCOUNT1.to_representation() account.pop('active') with pytest.raises(KeyDecodeError): app.serializers.loads_key(Account, json.dumps(account), serializer='json')
def test_json(): account = Account(id=1, name=2) user = User(1, 2, account) payload = json.dumps(user) deser = json.loads(payload) assert deser == { 'id': 1, 'username': 2, 'account': { 'id': 1, 'name': 2, 'active': True, '__faust': { 'ns': Account._options.namespace }, }, '__faust': { 'ns': User._options.namespace }, } assert user.__json__() == { 'id': 1, 'username': 2, 'account': account, '__faust': { 'ns': User._options.namespace }, } assert User.from_data(deser) == user
def test_loads_value_missing_key_raises_error(*, app): account = ACCOUNT1.to_representation() account.pop("active") with pytest.raises(ValueDecodeError): app.serializers.loads_value(Account, json.dumps(account), serializer="json")
def _dumps(self, s: Any) -> bytes: return want_bytes(_json.dumps(s))
class Account(faust.Record): id: str active: bool user: User # Account1 USER1 = User('A2', 'George', 'Costanza') ACCOUNT1 = Account(id='A1', active=True, user=USER1) ACCOUNT1_JSON = ACCOUNT1.dumps(serializer='json') # Account1 without blessed key ACCOUNT1_UNBLESSED = ACCOUNT1.to_representation() ACCOUNT1_UNBLESSED.pop('__faust') ACCOUNT1_UNBLESSED_JSON = json.dumps(ACCOUNT1_UNBLESSED) # Account1 with extra fields ACCOUNT1_EXTRA_FIELDS = ACCOUNT1.to_representation() ACCOUNT1_EXTRA_FIELDS.update( join_date='12321321312', foo={ 'a': 'A', 'b': 'B' }, bar=[1, 2, 3, 4], ) ACCOUNT1_EXTRA_FIELDS_JSON = json.dumps(ACCOUNT1_EXTRA_FIELDS) # Account2 USER2 = User('B2', 'Elaine', 'Benes')
def dumps(self, obj: Any) -> str: """Serialize object using JSON.""" return json.dumps(obj)
def _tabulate_json(self, data: terminal.TableDataT, headers: Sequence[str] = None) -> str: if headers: return json.dumps([dict(zip(headers, row)) for row in data]) return json.dumps(data)
def dumps(self, obj: Any) -> str: return json.dumps(obj)
def test_window_range_json_dump(self): serialized = dumps(WindowRange(1, 2)) assert serialized == '[1, 2]'