Skip to content

Commit 92e08ec

Browse files
committed
Remove "type" and "value" keys
Replaced with "type" key with the actual type name
1 parent 4da873e commit 92e08ec

File tree

4 files changed

+35
-77
lines changed

4 files changed

+35
-77
lines changed

crates/bevy_reflect/src/lib.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -942,8 +942,7 @@ bevy_reflect::tests::should_reflect_debug::Test {
942942
let output = to_string_pretty(&ser, config).unwrap();
943943
let expected = r#"
944944
{
945-
"type": "glam::f32::vec3::Vec3",
946-
"value": {
945+
"glam::f32::vec3::Vec3": {
947946
"x": 12.0,
948947
"y": 3.0,
949948
"z": -6.9,
@@ -957,8 +956,7 @@ bevy_reflect::tests::should_reflect_debug::Test {
957956
fn vec3_deserialization() {
958957
let data = r#"
959958
{
960-
"type": "glam::f32::vec3::Vec3",
961-
"value": {
959+
"glam::f32::vec3::Vec3": {
962960
"x": 12.0,
963961
"y": 3.0,
964962
"z": -6.9,

crates/bevy_reflect/src/serde/de.rs

Lines changed: 24 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use crate::{
2-
serde::type_fields, ArrayInfo, DynamicArray, DynamicEnum, DynamicList, DynamicMap,
3-
DynamicStruct, DynamicTuple, DynamicTupleStruct, EnumInfo, ListInfo, Map, MapInfo, NamedField,
4-
Reflect, ReflectDeserialize, StructInfo, StructVariantInfo, Tuple, TupleInfo, TupleStruct,
5-
TupleStructInfo, TupleVariantInfo, TypeInfo, TypeRegistry, UnnamedField, VariantInfo,
2+
ArrayInfo, DynamicArray, DynamicEnum, DynamicList, DynamicMap, DynamicStruct, DynamicTuple,
3+
DynamicTupleStruct, EnumInfo, ListInfo, Map, MapInfo, NamedField, Reflect, ReflectDeserialize,
4+
StructInfo, StructVariantInfo, Tuple, TupleInfo, TupleStruct, TupleStructInfo,
5+
TupleVariantInfo, TypeInfo, TypeRegistry, UnnamedField, VariantInfo,
66
};
77
use erased_serde::Deserializer;
88
use serde::de::{self, DeserializeSeed, Error, MapAccess, SeqAccess, Visitor};
@@ -137,42 +137,19 @@ impl<'a, 'de> Visitor<'de> for UntypedReflectDeserializerVisitor<'a> {
137137
where
138138
A: MapAccess<'de>,
139139
{
140-
let type_name = match map.next_key::<&str>()? {
141-
Some(type_fields::TYPE) => map.next_value::<&str>()?,
142-
Some(type_fields::VALUE) => {
143-
// `type` must come before `value`.
144-
return Err(de::Error::missing_field(type_fields::TYPE));
145-
}
146-
Some(field) => {
147-
return Err(de::Error::unknown_field(field, &[type_fields::TYPE]));
148-
}
149-
None => {
150-
return Err(de::Error::invalid_length(
151-
0,
152-
&"two entries: `type` and `value`",
153-
));
154-
}
155-
};
140+
let type_name = map
141+
.next_key::<&str>()?
142+
.ok_or_else(|| Error::invalid_length(0, &"at least one entry"))?;
156143

157-
match map.next_key::<&str>()? {
158-
Some(type_fields::VALUE) => {
159-
let registration = self.registry.get_with_name(type_name).ok_or_else(|| {
160-
de::Error::custom(format_args!("No registration found for {}", type_name))
161-
})?;
162-
let type_info = registration.type_info();
163-
let value = map.next_value_seed(TypedReflectDeserializer {
164-
type_info,
165-
registry: self.registry,
166-
})?;
167-
Ok(value)
168-
}
169-
Some(type_fields::TYPE) => Err(de::Error::duplicate_field(type_fields::TYPE)),
170-
Some(field) => Err(de::Error::unknown_field(field, &[type_fields::VALUE])),
171-
None => Err(de::Error::invalid_length(
172-
0,
173-
&"two entries: `type` and `value`",
174-
)),
175-
}
144+
let registration = self.registry.get_with_name(type_name).ok_or_else(|| {
145+
Error::custom(format_args!("No registration found for {}", type_name))
146+
})?;
147+
let type_info = registration.type_info();
148+
let value = map.next_value_seed(TypedReflectDeserializer {
149+
type_info,
150+
registry: self.registry,
151+
})?;
152+
Ok(value)
176153
}
177154
}
178155

@@ -397,8 +374,8 @@ impl<'a, 'de> Visitor<'de> for TupleVisitor<'a> {
397374
}
398375

399376
fn visit_seq<V>(self, mut seq: V) -> Result<Self::Value, V::Error>
400-
where
401-
V: SeqAccess<'de>,
377+
where
378+
V: SeqAccess<'de>,
402379
{
403380
visit_tuple(&mut seq, self.tuple_info, self.registry)
404381
}
@@ -819,8 +796,7 @@ mod tests {
819796

820797
// === Unit Variant === //
821798
let input = r#"{
822-
"type": "bevy_reflect::serde::de::tests::enum_should_deserialize::MyEnum",
823-
"value": {
799+
"bevy_reflect::serde::de::tests::enum_should_deserialize::MyEnum": {
824800
"Unit": (),
825801
},
826802
}"#;
@@ -833,8 +809,7 @@ mod tests {
833809

834810
// === NewType Variant === //
835811
let input = r#"{
836-
"type": "bevy_reflect::serde::de::tests::enum_should_deserialize::MyEnum",
837-
"value": {
812+
"bevy_reflect::serde::de::tests::enum_should_deserialize::MyEnum": {
838813
"NewType": (123),
839814
},
840815
}"#;
@@ -847,8 +822,7 @@ mod tests {
847822

848823
// === Tuple Variant === //
849824
let input = r#"{
850-
"type": "bevy_reflect::serde::de::tests::enum_should_deserialize::MyEnum",
851-
"value": {
825+
"bevy_reflect::serde::de::tests::enum_should_deserialize::MyEnum": {
852826
"Tuple": (1.23, 3.21),
853827
},
854828
}"#;
@@ -861,8 +835,7 @@ mod tests {
861835

862836
// === Struct Variant === //
863837
let input = r#"{
864-
"type": "bevy_reflect::serde::de::tests::enum_should_deserialize::MyEnum",
865-
"value": {
838+
"bevy_reflect::serde::de::tests::enum_should_deserialize::MyEnum": {
866839
"Struct": {
867840
"value": "I <3 Enums",
868841
},
@@ -899,8 +872,7 @@ mod tests {
899872
};
900873

901874
let input = r#"{
902-
"type": "bevy_reflect::serde::de::tests::MyStruct",
903-
"value": {
875+
"bevy_reflect::serde::de::tests::MyStruct": {
904876
"primitive_value": 123,
905877
"option_value": Some("Hello world!"),
906878
"tuple_value": (
@@ -951,8 +923,7 @@ mod tests {
951923
#[test]
952924
fn should_deserialize_value() {
953925
let input = r#"{
954-
"type": "f32",
955-
"value": 1.23,
926+
"f32": 1.23,
956927
}"#;
957928

958929
let registry = get_registry();

crates/bevy_reflect/src/serde/mod.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,3 @@ mod ser;
33

44
pub use de::*;
55
pub use ser::*;
6-
7-
pub(crate) mod type_fields {
8-
pub const TYPE: &str = "type";
9-
pub const VALUE: &str = "value";
10-
}

crates/bevy_reflect/src/serde/ser.rs

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::{
2-
serde::type_fields, Array, Enum, List, Map, Reflect, ReflectRef, ReflectSerialize, Struct,
3-
Tuple, TupleStruct, TypeRegistry, VariantType,
2+
Array, Enum, List, Map, Reflect, ReflectRef, ReflectSerialize, Struct, Tuple, TupleStruct,
3+
TypeRegistry, VariantType,
44
};
55
use serde::ser::SerializeTuple;
66
use serde::{
@@ -61,10 +61,9 @@ impl<'a> Serialize for ReflectSerializer<'a> {
6161
where
6262
S: serde::Serializer,
6363
{
64-
let mut state = serializer.serialize_map(Some(2))?;
65-
state.serialize_entry(type_fields::TYPE, self.value.type_name())?;
64+
let mut state = serializer.serialize_map(Some(1))?;
6665
state.serialize_entry(
67-
type_fields::VALUE,
66+
self.value.type_name(),
6867
&TypedReflectSerializer::new(self.value, self.registry),
6968
)?;
7069
state.end()
@@ -442,8 +441,7 @@ mod tests {
442441

443442
let output = ron::ser::to_string_pretty(&serializer, config).unwrap();
444443
let expected = r#"{
445-
"type": "bevy_reflect::serde::ser::tests::MyStruct",
446-
"value": {
444+
"bevy_reflect::serde::ser::tests::MyStruct": {
447445
"primitive_value": 123,
448446
"option_value": Some("Hello world!"),
449447
"tuple_value": (3.1415927, 1337),
@@ -493,8 +491,7 @@ mod tests {
493491
let serializer = ReflectSerializer::new(&value, &registry);
494492
let output = ron::ser::to_string_pretty(&serializer, config.clone()).unwrap();
495493
let expected = r#"{
496-
"type": "bevy_reflect::serde::ser::tests::enum_should_serialize::MyEnum",
497-
"value": {
494+
"bevy_reflect::serde::ser::tests::enum_should_serialize::MyEnum": {
498495
"Unit": (),
499496
},
500497
}"#;
@@ -505,8 +502,7 @@ mod tests {
505502
let serializer = ReflectSerializer::new(&value, &registry);
506503
let output = ron::ser::to_string_pretty(&serializer, config.clone()).unwrap();
507504
let expected = r#"{
508-
"type": "bevy_reflect::serde::ser::tests::enum_should_serialize::MyEnum",
509-
"value": {
505+
"bevy_reflect::serde::ser::tests::enum_should_serialize::MyEnum": {
510506
"NewType": (123),
511507
},
512508
}"#;
@@ -517,8 +513,7 @@ mod tests {
517513
let serializer = ReflectSerializer::new(&value, &registry);
518514
let output = ron::ser::to_string_pretty(&serializer, config.clone()).unwrap();
519515
let expected = r#"{
520-
"type": "bevy_reflect::serde::ser::tests::enum_should_serialize::MyEnum",
521-
"value": {
516+
"bevy_reflect::serde::ser::tests::enum_should_serialize::MyEnum": {
522517
"Tuple": (1.23, 3.21),
523518
},
524519
}"#;
@@ -531,8 +526,7 @@ mod tests {
531526
let serializer = ReflectSerializer::new(&value, &registry);
532527
let output = ron::ser::to_string_pretty(&serializer, config).unwrap();
533528
let expected = r#"{
534-
"type": "bevy_reflect::serde::ser::tests::enum_should_serialize::MyEnum",
535-
"value": {
529+
"bevy_reflect::serde::ser::tests::enum_should_serialize::MyEnum": {
536530
"Struct": {
537531
"value": "I <3 Enums",
538532
},

0 commit comments

Comments
 (0)