2016-04-25 48 views
0

我的要求是將重複項轉換爲json字符串中的數組。將JSON字符串中的重複項轉換爲數組

{ 
    "ExtendedData":{ 
     "OrderRecord":{ 
     "ABC_OrderRG":{ 
      "ABC_OrderRGLvl1":{ 
       "ABC_OrderRGLvl1String":"A" 
      }, 
      "ABC_OrderRGLvl1":{ 
       "ABC_OrderRGLvl1String":"B", 

      }, 
     } 
     } 
    } 
} 

我想將重複的術語"ABC_OrderRGLvl1"轉換爲數組。

{    
    "ExtendedData":{ 
     "OrderRecord":{ 
     "ABC_OrderRG":{ 
      "ABC_OrderRGLvl1":[ 
       { 
        "ABC_OrderRGLvl1String":"A" 
       }, 
       { 
        "ABC_OrderRGLvl1String":"B", 

       } 
      ] 
     } 
     } 
    } 
} 

我一直在使用org.json.JSONObject,它在putOnce中出現錯誤時會出現重複鍵錯誤。

我能想到的解決方案是編寫我自己的解析器。有沒有更好的建議或任何現有的工具?

+0

我不知道是否使用gson流解析會有所幫助?我不熟悉,但看起來你需要一些可以讀取ABC_OrderRGLvl1值的東西,而不必讀下一個並踩踏它。 – billjamesdev

+0

@billjamesdev你說得對gson流更好。截至目前我使用JSONTokenizer進行標記,但gson似乎更好。使用堆棧,我們可以解決讀取下一個問題 –

回答

0

首先解析這種JSON的結果是不可預知的每 RFC 它說

當一個對象中的名稱不是唯一的,軟件接收這樣一個對象的行爲是不可預測的

這樣做的一種方法是使用Jackson Streaming API。實例化jsonparser並通過令牌讀取json令牌並編寫自己的邏輯來處理重複密鑰 http://wiki.fasterxml.com/JacksonInFiveMinutes

+0

感謝Tyagi我正在使用org.json.JSONTokener.java這是很好的標記。我現在幾乎完成了我的解析。 –