@@ -25,8 +25,8 @@ pub struct Contract {
2525 #[ serde( default , skip_serializing_if = "serde_json::Value::is_null" ) ]
2626 pub transient_storage_layout : serde_json:: Value ,
2727 /// The contract metadata.
28- #[ serde( default , skip_serializing_if = "serde_json::Value::is_null " ) ]
29- pub metadata : serde_json :: Value ,
28+ #[ serde( default , skip_serializing_if = "String::is_empty " ) ]
29+ pub metadata : String ,
3030 /// The contract developer documentation.
3131 #[ serde( default , skip_serializing_if = "serde_json::Value::is_null" ) ]
3232 pub devdoc : serde_json:: Value ,
@@ -41,16 +41,28 @@ pub struct Contract {
4141 pub evm : Option < EVM > ,
4242
4343 /// Unlinked factory dependencies.
44- #[ serde( default , skip_deserializing) ]
44+ #[ serde(
45+ default ,
46+ skip_serializing_if = "BTreeSet::is_empty" ,
47+ skip_deserializing
48+ ) ]
4549 pub factory_dependencies_unlinked : BTreeSet < String > ,
4650 /// Linked factory dependencies.
47- #[ serde( default , skip_deserializing) ]
51+ #[ serde(
52+ default ,
53+ skip_serializing_if = "BTreeMap::is_empty" ,
54+ skip_deserializing
55+ ) ]
4856 pub factory_dependencies : BTreeMap < String , String > ,
4957 /// Missing linkable libraries.
50- #[ serde( default , skip_deserializing) ]
58+ #[ serde(
59+ default ,
60+ skip_serializing_if = "BTreeSet::is_empty" ,
61+ skip_deserializing
62+ ) ]
5163 pub missing_libraries : BTreeSet < String > ,
5264 /// Binary object format.
53- #[ serde( default , skip_deserializing) ]
65+ #[ serde( default , skip_serializing_if = "Option::is_none" , skip_deserializing) ]
5466 pub object_format : Option < era_compiler_common:: ObjectFormat > ,
5567}
5668
@@ -62,7 +74,7 @@ impl Contract {
6274 self . abi . is_null ( )
6375 && self . storage_layout . is_null ( )
6476 && self . transient_storage_layout . is_null ( )
65- && self . metadata . is_null ( )
77+ && self . metadata . is_empty ( )
6678 && self . devdoc . is_null ( )
6779 && self . userdoc . is_null ( )
6880 && self . ir_optimized . is_empty ( )
0 commit comments