簡體   English   中英

跨平台JSON序列化

[英]Cross-Platform JSON Serialization

我希望在兩個獨立的桌面應用程序之間共享對象數據。 通常,我會使用序列化庫在一個應用程序中序列化對象,然后在另一個應用程序中反序列化它們(並將數據強制轉換為對象)。

問題:

  • 我在C#中序列化對象
  • 用Java反序列化它們

這是我想在Java中反序列化的ac#類(Foo):

class Foo
{
    public List<Bar> BarList {get;set;}
    public string Name { get; set; }
}
class Bar
{
    public string X { get; set; }
    public int Y { get; set; }
}

注意:我正在使用JSON.NET進行序列化

JSON作為示例Foo對象

{“ BarList”:[{“ X”:“ hi”,“ Y”:5},{“ X”:“ hello”,“ Y”:10}],“名稱”:“ foo”}

在Java中使用此對象

假設我在Java中有一個非常相似的Foo類。 它具有標准的私有成員,而不是屬性,具有公共獲取/設置方法。

現在,我可以簡單地執行以下操作:

class Foo
{
    private ArrayList<Bar> barList;
    private string name;

    public Foo(string pathToJsonFile)
    {
         // Method/Code to manually grab the needed JSON and call setters
    }

    // Setters/Getters
}

此解決方案有效,但我寧願避免在Java項目中的每個對象上都使用此構造函數。 另外,如果我具有深層耦合的對象,則此方法將非常龐大(反序列化此對象,但其中包含也需要反序列化的對象等)。

我的問題:

Java標准庫中是否存在任何反序列化方法,可以使此過程更輕松?

算法的想法也將不勝感激(我不介意創建一個小型框架)。

只要第三方解決方案是完全開源的,並且沒有.jar依賴項,就可以了

您是否看過JSON-B (JSR 367)? 盡管這似乎尚未出現在標准庫中,但最終規格已於今年6月獲得批准 有一個名為Yasson的官方參考實現,它是開源的。

如果這不是您要找的東西,那么可以使用Java處理JSON綁定的各種第三方開源庫,例如JacksonGsonGensonFlexJsonjson-simple等 其中,前兩個似乎最受歡迎。 您可以在json.org上找到更多的庫。

上次我檢查時,Java SE沒有這些。 在Java EE中,至少在包java.ws.rs有API。 您可以使用API​​,並且在很大程度上獨立於實現。

如果您想創建自己的框架,請盡情玩樂。 JSON比您想象的要復雜得多,因此,根據要支持的JSON子集的大小,此任務可能會非常耗時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM