gpt4 book ai didi

java - 跨平台 JSON 序列化

转载 作者:行者123 更新时间:2023-12-02 12:03:22 26 4
gpt4 key购买 nike

我希望在两个独立的桌面应用程序之间共享对象数据。通常,我会使用序列化库在一个应用程序中序列化对象,然后在另一个应用程序中反序列化它们(并将数据转换为对象)。

问题:

  • 我正在使用 C# 序列化对象
  • 想要在 Java 中反序列化它们

示例

这是一个我想在 Java 中反序列化的 C# 类 (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序列化

示例 Foo 对象的 JSON

{ "BarList": [ { "X": "hi", "Y": 5 }, { "X": "hello", "Y": 10 } ], "Name": "foo" }

在 Java 中使用此对象

假设我在 Java 中有一个非常相似的 Foo 类。它没有 Properties,而是具有公共(public) getter/setter 方法的标准私有(private)成员。

现在,我可以简单地执行以下操作:

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)?虽然这似乎还没有出现在标准库中,但最终规范 was approved今年六月。有一个官方引用实现,名为 Yasson这是开源的。

如果这不是您想要的,有各种第三方开源库可以在 Java 中处理 JSON 绑定(bind),例如 Jackson , Gson , Genson , FlexJsonjson-simple仅举几例。其中,前两个似乎最受欢迎。您可以在 json.org 上找到更多的库。 .

关于java - 跨平台 JSON 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47079758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com