剛開始使用JSON參考庫(http://docs.oracle.com/javaee/7/api/javax/json/package-summary.html)編寫一些代碼,並遇到一個簡單的問題。用一個簡單但「醜陋」的解決方案。Java-EE 7 Json規格 - 讀/寫功能?
JsonObjects是'不可變的',儘管有一個Map類的支持,這意味着我不應該修改它們。
我想非常動態地構造一個對象,比如說,接受一個數組併爲它添加一個元素,一個完整的「讀/寫」模型。但是JsonObjectBuilder似乎實現了「只寫」接口 - 你可以把東西放在那裏,但你永遠不會讀它們(不會繼承map或任何東西?),所以如果你把一個ArrayBuilder放入在那裏,如果你以後想要添加它,你必須跟蹤它(因爲沒有辦法'讀'陣列構建器退出......)
所以接縫是兩個接口,一個是隻讀,一個是隻寫,唯一可能的轉換是隻寫到只讀,沒有退路,也沒有辦法讀/寫JSON結構。
我覺得我失去了一些東西很明顯...
明顯的「髒」的解決辦法當然是將數據存儲在自己的結構,然後將其轉換爲JSON建設者在構建時,壽這對於需要對其進行修改並將其傳遞給JSON的接收器並沒有什麼幫助。我的對象和它之間的雙向接口,或轉換器只讀json's(遞歸地)返回到構建器並在此過程中修改它...
我錯過了什麼?爲什麼我似乎必須構建自己的JSON表示並將其流入和導出RO/WO模型?
(是的,我曾嘗試使用Google,什麼我想出了是有幫助的,這進一步混淆我...)
嗨,喲,怕沒太大用處。我打算構建一個基本上是大型組件鏈,現在所有的java,並且大多是「本地」的系統,但最終遠程任務可以加入其他語言...... JSON似乎是一種很好的「消息格式」 ,靈活的等等......除了能夠本地處理動態的JSON對象,在一天結束時的大問題似乎是這樣的: 如果我收到一條JSON消息,而我的工作只是添加一個元素到某處然後傳遞JSON消息,爲什麼我不得不解構整個數據結構並重建? – iain
感謝您回覆壽,沒有人甚至設法說「是的,不行!」。我在另一種語言(第二人生的LSL)中使用了JSON,其中原生數據結構非常糟糕,實際上只是在JSON中存儲「狀態」,因爲它傳遞的代碼部分非常好,在已經傳遞的系統中它在很多代碼,系統和語言之間,爲什麼要反序列化/連續兩次? 「序列化表單」 - > JSON對象表單 - >我的數據結構 - > JSON生成器 - >序列化表單。我只能在「我的數據結構」中進行修改。看起來故意效率低下。 – iain
(特別是,如果我必須編寫自己的代碼,將JSONObjects解密到/解密到我的數據類中,然後將它們重新編碼爲JSONBuilder,僅用於使用其序列化/反序列化......並且它的內部數據結構就是我需要的一切,建立這樣一個轉換器接口的唯一原因是因爲我被迫......沒有關於我從這一步獲得的設計好處,我間接實現了相同的目標,所以最終目標不能實現是「不可能的錯誤」......所以爲什麼這麼強制) – iain