@@ -76,15 +76,15 @@ def getonelevel(input_data, paths, pathid, opt):
7676
7777 if arrayrange ["start" ] is not None :
7878 if arrayrange ["start" ] < 0 :
79- arrayrange ["start" ] = len (input_data ) + arrayrange ["start" ]
79+ arrayrange ["start" ] = len (input_data ) + arrayrange ["start" ] + 1
8080 else :
8181 arrayrange ["start" ] += 1
8282 else :
8383 arrayrange ["start" ] = 1
8484
8585 if arrayrange ["end" ] is not None :
8686 if arrayrange ["end" ] < 0 :
87- arrayrange ["end" ] = len (input_data ) + arrayrange ["end" ]
87+ arrayrange ["end" ] = len (input_data ) + arrayrange ["end" ] + 1
8888 else :
8989 arrayrange ["end" ] += 1
9090 else :
@@ -97,7 +97,7 @@ def getonelevel(input_data, paths, pathid, opt):
9797 firstidx += 1
9898 arrayrange ["start" ] = arrayrange ["end" ] = firstidx
9999 elif re .match (r"^\*$" , arraystr ):
100- pass
100+ arrayrange = { "start" : 1 , "end" : len ( input_data )}
101101
102102 if (
103103 "arrayrange" in locals ()
@@ -117,7 +117,13 @@ def getonelevel(input_data, paths, pathid, opt):
117117 item , paths [:pathid ] + [searchkey ], pathid , opt
118118 )
119119 if isfound :
120- newobj .extend (val )
120+ if isinstance (val , list ):
121+ if len (val ) > 1 :
122+ newobj .extend (val )
123+ else :
124+ newobj .append (val )
125+ else :
126+ newobj .append (val )
121127 if newobj :
122128 obj = newobj
123129 if isinstance (obj , list ) and len (obj ) == 1 :
@@ -130,7 +136,6 @@ def getonelevel(input_data, paths, pathid, opt):
130136 if stpath in input_data :
131137 obj = [input_data [stpath ]]
132138
133- deepscan = False
134139 if obj is None or deepscan :
135140 items = input_data .keys ()
136141
@@ -141,7 +146,10 @@ def getonelevel(input_data, paths, pathid, opt):
141146 if isfound :
142147 obj = obj or []
143148 if isinstance (val , list ):
144- obj .extend (val )
149+ if len (val ) > 1 :
150+ obj .extend (val )
151+ else :
152+ obj .append (val )
145153 else :
146154 obj .append (val )
147155
0 commit comments