2323 */
2424package com .esri .core .geometry ;
2525
26- import java .util .ArrayList ;
27- import org .codehaus .jackson .JsonParser ;
28- import org .codehaus .jackson .JsonToken ;
29- import org .json .JSONArray ;
3026import org .json .JSONObject ;
3127
28+ import java .util .Iterator ;
29+
3230final class JSONObjectEnumerator {
3331
3432 private JSONObject m_jsonObject ;
3533 private boolean m_bStarted ;
3634 private int m_currentIndex ;
37- private String [] m_keys ;
35+ private Iterator <?> m_keys_iter ;
36+ private String m_current_key ;
3837
3938 JSONObjectEnumerator (JSONObject jsonObject ) {
4039 m_bStarted = false ;
@@ -51,7 +50,7 @@ String getCurrentKey() {
5150 throw new GeometryException ("invalid call" );
5251 }
5352
54- return m_keys [ m_currentIndex ] ;
53+ return m_current_key ;
5554 }
5655
5756 Object getCurrentObject () {
@@ -63,15 +62,23 @@ Object getCurrentObject() {
6362 throw new GeometryException ("invalid call" );
6463 }
6564
66- return m_jsonObject .opt (m_keys [ m_currentIndex ] );
65+ return m_jsonObject .opt (m_current_key );
6766 }
6867
6968 boolean next () {
7069 if (!m_bStarted ) {
7170 m_currentIndex = 0 ;
72- m_keys = JSONObject . getNames ( m_jsonObject );
71+ m_keys_iter = m_jsonObject . keys ( );
7372 m_bStarted = true ;
73+ if (m_keys_iter .hasNext ()) {
74+ m_current_key = (String )m_keys_iter .next ();
75+ }
76+
7477 } else if (m_currentIndex != m_jsonObject .length ()) {
78+ if (m_keys_iter .hasNext ()) {
79+ m_current_key = (String )m_keys_iter .next ();
80+ }
81+
7582 m_currentIndex ++;
7683 }
7784
0 commit comments