@@ -72,6 +72,10 @@ func (cb ClassBuilder) BuildMetadata(class nft.Class) (string, error) {
7272 //when classData is not a legal json, there is no need to parse the data
7373 return base64 .RawStdEncoding .EncodeToString ([]byte (metadata .Data )), nil
7474 }
75+ //note: if metadata.Data is null, it may cause map to be redefined as nil
76+ if kvals == nil {
77+ kvals = make (map [string ]interface {})
78+ }
7579 }
7680 creator , err := sdk .AccAddressFromBech32 (metadata .Creator )
7781 if err != nil {
@@ -210,17 +214,21 @@ func (cb ClassBuilder) Build(classID, classURI, classData string) (nft.Class, er
210214 }
211215 }
212216
213- data , err := json .Marshal (dataMap )
214- if err != nil {
215- return nft.Class {}, err
217+ var data = ""
218+ if len (dataMap ) > 0 {
219+ dataBz , err := json .Marshal (dataMap )
220+ if err != nil {
221+ return nft.Class {}, err
222+ }
223+ data = string (dataBz )
216224 }
217225
218226 any , err := codectypes .NewAnyWithValue (& DenomMetadata {
219227 Creator : creator ,
220228 Schema : schema ,
221229 MintRestricted : mintRestricted ,
222230 UpdateRestricted : updateRestricted ,
223- Data : string ( data ) ,
231+ Data : data ,
224232 })
225233 if err != nil {
226234 return nft.Class {}, err
@@ -261,6 +269,10 @@ func (tb TokenBuilder) BuildMetadata(token nft.NFT) (string, error) {
261269 //when nftMetadata is not a legal json, there is no need to parse the data
262270 return base64 .RawStdEncoding .EncodeToString ([]byte (nftMetadata .Data )), nil
263271 }
272+ //note: if nftMetadata.Data is null, it may cause map to be redefined as nil
273+ if kvals == nil {
274+ kvals = make (map [string ]interface {})
275+ }
264276 }
265277 kvals [TokenKeyName ] = MediaField {Value : nftMetadata .Name }
266278 kvals [TokenKeyURIhash ] = MediaField {Value : token .UriHash }
@@ -317,14 +329,18 @@ func (tb TokenBuilder) Build(classId, tokenId, tokenURI, tokenData string) (nft.
317329 }
318330 }
319331
320- data , err := json .Marshal (dataMap )
321- if err != nil {
322- return nft.NFT {}, err
332+ var data = ""
333+ if len (dataMap ) > 0 {
334+ dataBz , err := json .Marshal (dataMap )
335+ if err != nil {
336+ return nft.NFT {}, err
337+ }
338+ data = string (dataBz )
323339 }
324340
325341 metadata , err := codectypes .NewAnyWithValue (& NFTMetadata {
326342 Name : name ,
327- Data : string ( data ) ,
343+ Data : data ,
328344 })
329345 if err != nil {
330346 return nft.NFT {}, err
@@ -338,7 +354,3 @@ func (tb TokenBuilder) Build(classId, tokenId, tokenURI, tokenData string) (nft.
338354 Data : metadata ,
339355 }, nil
340356}
341-
342- func PopIfExist () {
343-
344- }
0 commit comments