@@ -347,25 +347,29 @@ def sjsonmap(indata,mapdata):
347347 continue
348348 mapdata = S
349349 if type (indata )== type (mapdata ):
350- if isinstance (mapdata ,list ) and safeget (mapdata ,0 )== reserved_append :
350+ if safeget (mapdata ,0 )!= reserved_append or isinstance (mapdata ,OrderedDict ):
351+ if isinstance (mapdata ,list ):
352+ if safeget (mapdata ,0 )== reserved_delete :
353+ return DNE
354+ if safeget (mapdata ,0 )== reserved_replace :
355+ del mapdata [0 ]
356+ return mapdata
357+ indata .extend ([DNE ]* (len (mapdata )- len (indata )))
358+ for k ,v in enumerate (mapdata ):
359+ indata [k ] = sjsonmap (safeget (indata ,k ),v )
360+ elif isinstance (mapdata ,dict ):
361+ if safeget (mapdata ,reserved_delete ):
362+ return DNE
363+ if safeget (mapdata ,reserved_replace ):
364+ del mapdata [reserved_replace ]
365+ return mapdata
366+ for k ,v in mapdata .items ():
367+ indata [k ] = sjsonmap (safeget (indata ,k ),v )
368+ return indata
369+ elif isinstance (mapdata ,list ):
351370 for i in range (1 ,len (mapdata )):
352371 indata .append (mapdata [i ])
353- elif isinstance (mapdata ,list ):
354- if safeget (mapdata ,0 )== reserved_replace :
355- del mapdata [0 ]
356- return mapdata
357- indata .extend ([DNE ]* (len (mapdata )- len (indata )))
358- for k ,v in enumerate (mapdata ):
359- indata [k ] = sjsonmap (safeget (indata ,k ),v )
360- elif isinstance (mapdata ,dict ):
361- if safeget (mapdata ,reserved_replace ):
362- del mapdata [reserved_replace ]
363- return mapdata
364- for k ,v in mapdata .items ():
365- indata [k ] = sjsonmap (safeget (indata ,k ),v )
366- else :
367- return mapdata
368- return indata
372+ return indata
369373 else :
370374 return mapdata
371375 return mapdata
0 commit comments